воскресенье, 23 октября 2011 г.

Функция PARS

Очень полезная функция для копирования части текста.

Код:

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;



Пользоватся так:
label1.Caption:=pars('начало', переменная, 'конец');

И не забываем после public писать это:
function Pars(T_, ForS, _T:string):string;


8 комментариев:

  1. а как сделать что б парсило не одну строку,а много?

    ОтветитьУдалить
  2. Анонимный20 июня 2012 г., 17:37

    VanS, покажи пример спарсить Chr(86)&Chr(97)&Chr(110)&Chr(83) из Memo1 в Memo2 таким видом 86.97.110.83.

    ОтветитьУдалить
  3. Улучшенная функция парсинга

    // Uses StrUtils;

    // Pars Ultimate by Alex_pac
    function Pars(const T_, _T, Text : string): string;
    var a, b:integer;
    begin
    Result := '';
    if (T_='') or (Text='') or (_T='') then Exit;
    a:=pos(T_, Text);
    if a=0 then exit;
    b:=posEx(_T,Text,a);
    if b>0 then
    Result:=Copy(Text, a+Length(T_), b-a-Length(T_));
    end;

    ОтветитьУдалить
  4. Какие же вы все таки школьники! Нифедов одобряет. Скомуниздили мою функцию, и написали, что сами. Поменяли только имена переменных некоторых и их места.

    ОтветитьУдалить
    Ответы
    1. Если поменяли - то это уже не Ваша. Ваша та которую не меняли. Так что не надо тут про это.

      А вообще, я не писал что данная функция моя. Нашёл её ещё давно в каком то исходнике, вот и пользуюсь.

      Удалить
    2. Если нашел вашу машину, телефон. И поменял в них что то, то машина и телефон уже не Ваши.

      Удалить
    3. Машина и телефон зарегистрированы на меня, и я смогу доказать что они мои. Тем более там куча уникальных деталей в отличие от куска текста.

      Удалить