Не выходит циклом. Только первое слово.
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;