PDA

Просмотр полной версии : [Помогите!] Парсить функцией Pars


ncdos
20.06.2012, 19:11
delete/

Dinmaite
20.06.2012, 19:29
Не выходит циклом. Только первое слово.
function Pars(T_ : string; var ForS: string; _T: string): string;
var
a, b: Integer;
begin
if (T_ <> '') and (ForS <> '') and (_T <> '') then
begin
a := Pos(T_, ForS);
Result := Copy(ForS, a + Length(T_), Length(ForS));
b := Pos(_T, Result);
Result := Copy(Result, 1, b - 1);
if (a>0) or (b>0) then
Delete(ForS,a,b+length(_T)+length(T_)-1)
else
Result := '';
end
else
Result := '';
end;

procedure TForm1.Button1Click(Sender: TObject);
var
t,q:string;
begin
t:='-Привет- agagajgklajw -zhyk.ru- -ffg';
q:='';
while pos('-', t) > 0 do
q:=q+pars('-', t, '-');
caption :=q;
end;

У меня выходит, что я делаю не так?

Dinmaite
20.06.2012, 20:26
Можно, изменяй свою функцию парсинга.
Таким образом, чтобы в случае " -text " не проводился парсинг.

Рэйзор
20.06.2012, 20:59
Модуль StrUtils :bow:
Не хочешь его использовать - твое дело, но зачем копипастить этот безумный код, когда можно написать свой - уж 4 строки самому осилить можно:

function Pars(const source, left, right: string): string;
var
r, l: integer;
begin
l := pos(left, source);
r := pos(right, (Copy(source, l + length(left), length(source) - l - length(left)))) + l;
if l = r then exit('');
Result := Copy(source, l + length(left), r - l - 1);
end;