Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.01.2012, 15:36   #1
fezilk25
Форумчанин
 
Регистрация: 01.08.2010
Сообщений: 124
Сообщение Разбить GET-запрос на параметры

Код:
url=http://o-o.preferred.svo01s01.v14.lscache7.c.youtube.com/videoplayback?sparams=id%2Cexpire%2Cip%2Cipbits%2Citag%2Csource%2Calgorithm%2Cburst%2Cfactor%2Ccp&fexp=903309%2C903945%2C911501%2C901801&algorithm=throttle-factor&itag=35&ip=31.0.0.0&burst=40&sver=3&signature=5313F4DCAA9D3AF50C03282E1F06DD9B454119F5.1D1EBAE41A5F5AB0BFE6395E4D74DC142194D2FB&source=youtube&expire=1326043919&key=yt1&ipbits=8&factor=1.25&cp=U0hRS1BPUV9GU0NOMV9ISVVKOndodXVsZ1F6U0sx&id=ca20fa592ceaa982&quality=large&fallback_host=tc.v14.cache7.c.youtube.com&type=video/x-flv&itag=35,
есть вот такой длинный запрос с параметрами.
необходимо разбить его на части, чтобы получилось что то типа такого:
type=video/x-flv
itag=35
quality=large
а затем удалить некоторые параметры.
делал парсингом через pos, posex - задолбался: параметры не всегда стоят в одинаковом порядке.
Подскажите, пожалуйста, как это лучше реализовать.
fezilk25 вне форума Ответить с цитированием
Старый 08.01.2012, 15:46   #2
Mifody
Заблокирован
 
Регистрация: 12.02.2009
Сообщений: 215
По умолчанию

а не проще на такой коротенькой строке пробежаться циклом по символам?
1. "?" или "&" - начало параметра, следом идет имя параметра до "=" или конца строки
2. "=" - окончание имени параметра, далее идет значение параметра до "&" или окончания строки
Mifody вне форума Ответить с цитированием
Старый 09.01.2012, 22:44   #3
Delphi_ProGer
Форумчанин
 
Регистрация: 30.10.2010
Сообщений: 524
По умолчанию

может поможет:
Код:
procedure IsolateText(const S: String; Tag1, Tag2: String;
  list: TStrings);
 Var
    pScan, pEnd, pTag1, pTag2: PChar;
    foundText: String;
    searchtext: String;
  Begin
    { Set up pointers we need for the search. HTML is not case sensitive, so
      we need to perform the search on a uppercased copy of S.}
    searchtext := Uppercase(S);
    Tag1:= Uppercase( Tag1 );
    Tag2:= Uppercase( Tag2 );
    pTag1:= PChar(Tag1);
    pTag2:= PChar(Tag2);
    pScan:= PChar(searchtext);
    Repeat
      { Search for next occurence of Tag1. }
      pScan:= StrPos( pScan, pTag1 );
      If pScan <> Nil Then Begin
        { Found one, hop over it, then search from that position
          forward for the next occurence of Tag2. }
        Inc(pScan, Length( Tag1 ));
        pEnd := StrPos( pScan, pTag2 );
        If pEnd <> Nil Then Begin
          { Found start and end tag, isolate text between,
            add it to the list. We need to get the text from
            the original S, however, since we want the un-uppercased
            version! So we calculate the address pScan would hold if
            the search had been performed on S instead of searchtext. }
          SetString( foundText,
                     Pchar(S) + (pScan- PChar(searchtext) ),
                     pEnd - pScan );
          list.Add( foundText );

          { Continue next search after the found end tag. }
          pScan := pEnd + Length(tag2);
        End { If }
        Else { Error, no end tag found for start tag, abort. }
          pScan := Nil;
      End; { If }
    Until pScan = Nil;
end;
Delphi_ProGer вне форума Ответить с цитированием
Старый 10.01.2012, 00:04   #4
Bright-rider
Форумчанин
 
Регистрация: 09.07.2010
Сообщений: 102
По умолчанию

Сделай пост запросом, а в документе напиши параметры.
Bright-rider вне форума Ответить с цитированием
Старый 10.01.2012, 23:06   #5
fucil
Форумчанин
 
Регистрация: 24.02.2010
Сообщений: 148
По умолчанию

Delphi_ProGer а что ваша процедура делает если не сикрет ?
fucil вне форума Ответить с цитированием
Старый 11.01.2012, 00:56   #6
Delphi_ProGer
Форумчанин
 
Регистрация: 30.10.2010
Сообщений: 524
По умолчанию

Просто парсит инфо (S: String) , которая находиться между Tag1, и Tag2, и добавляет все отпарсеное в стринглист)
Например если на сайте есть структура вроде

<name>Nick1</name>
<name>Nick2</name>
<name>Nick3</name>

то вызвав IsolateText('input_string' ,'<name>', '</name>',list), у вас в листе должно быть:
Nick1
Nick2
Nick3
Как то так
Delphi_ProGer вне форума Ответить с цитированием
Старый 11.01.2012, 01:20   #7
fucil
Форумчанин
 
Регистрация: 24.02.2010
Сообщений: 148
Восклицание

Спасибо за ответ думал не ответишь или как все скажешь что влом разобраться самому !
Честно было влом разбираться держи + ))
Рад рад просто душевно ..


У меня типа такой есть только она работает по другому. Смысл такой-же, только она в массив раскидывает.

Последний раз редактировалось fucil; 11.01.2012 в 01:29.
fucil вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Реализовать программу через параметры-значений и параметры-ссылок bufalo C# (си шарп) 3 14.12.2011 17:10
ПАРАМЕТРЫ-КОНСТАНТЫ, НЕТИПИЗИРОВАННЫЕ ПАРАМЕТРЫ ПОДПРОГРАММ, МАССИВЫ И СТРОКИ ОТКРЫТОГО ТИПА Юрий62 Помощь студентам 1 04.12.2011 14:09
Как разбить SQL запрос на несколько строк? UNToxa БД в Delphi 4 17.02.2011 19:34
ПАРАМЕТРЫ-КОНСТАНТЫ, НЕТИПИЗИРОВАННЫЕ ПАРАМЕТРЫ ПОДПРОГРАММ, МАССИВЫ И СТРОКИ ОТКРЫТОГО ТИПА Kira09 Паскаль, Turbo Pascal, PascalABC.NET 0 19.12.2010 17:28
post запрос, результат разбить на строки Kukkk Общие вопросы Delphi 2 20.08.2009 17:01