Загрузка...

Функция парсинга строк, Delphi

Тема в разделе "С/С++/Pascal/Delphi", создана пользователем Defiler1488, 23.08.2012.

  1. Defiler1488

    Defiler1488

    Статус:
    Оффлайн
    Регистрация:
    23.08.12
    Сообщения:
    21
    Репутация:
    7 +/-
    Выложу исходный код этой замечательной функции. Она Вам поможет при создании веб приложений, а именно если надо спарсить автоматически создающиеся чексуммы или ссылки.
    Код:
    function TForm1.Pars(T_, ForS, _T: string): string;
    var a, b:integer;
    begin
    Result := '';
    if (T_='') or (ForS='') or (_T='') then Exit;
    a:=Pos(T_, ForS);
    if a=0 then Exit else a:=a+Length(T_);
    ForS:=Copy(ForS, a, Length(ForS)-a+1);
    b:=Pos(_T, ForS);
    if b>0 then
    Result:=Copy(ForS, 1, b - 1);
    end;
    Само тело функции, в public пишем:
    Код:
    function Pars(T_, ForS, _T:string):string;
    Использование функции:
    Код:
    perem:=pars('точка_А', from, 'точка_Б');
    Теперь пояснения:
    в переменную perem мы сохраняем участок текста между словами точка_А и точка_Б из переменной from. Т.е. если в переменной from лежит текст:
    "Меня зовут Вася", а вместо точка_А мы пишем - "Меня", вместо точки_Б - "Вася", то в переменной perem у нас окажется слово "зовут". Изложил на пальцах, чтобы не было вопросов.
    Для тех кто не понял, то при использовании idhttp вы гетом помещаем исходный код нужной нам страницы в переменную и парсим то, что нам надо.
     
  2. Alex Ey

    Alex Ey

    Статус:
    Оффлайн
    Регистрация:
    07.03.12
    Сообщения:
    1.157
    Репутация:
    693 +/-
    спасибо, но можно и по моему удобнее регэкспом парсить
     
  3. Defiler1488

    Defiler1488

    Статус:
    Оффлайн
    Регистрация:
    23.08.12
    Сообщения:
    21
    Репутация:
    7 +/-
    Не слышал о таком, я начинающий Delphi программист, всегда пользовался данной функцией, выручала она меня уже не раз)
     
  4. Alex Ey

    Alex Ey

    Статус:
    Оффлайн
    Регистрация:
    07.03.12
    Сообщения:
    1.157
    Репутация:
    693 +/-
    я тоже начинаю только, но пользуюсь всегда регэкспом)