[Lazarus-es] Parseador de etiquetas
José Mejuto
joshyfun en gmail.com
Mie Ene 12 10:07:23 CET 2022
El 11/01/2022 a las 21:59, Maxi via Lazarus-es escribió:
> Existe alguna libreria para parsear algo como esto?
> Todo lo que está entre <> corresponde a un tag y seguido el valor que le
> corresponde.
> Imagino se puede hacer con la synedit o similar pero no encontre como.
Hola,
Versión rápida, habría que controlar errores y eso pero bueno:
function Parse(const aStr: string): TStringList;
var
lGroups: TStringList;
lEach: TStringList;
j: Integer;
begin
Result:=TStringList.Create;
lGroups:=TStringList.Create;
lEach:=TStringList.Create;
lGroups.Delimiter:='<';
lGroups.DelimitedText:=aStr;
lEach.Delimiter:='>';
for j := 0 to Pred(lGroups.Count) do
begin
lEach.DelimitedText:=lGroups[j];
if lEach.Count=2 then begin
Result.Add(lEach[0]+'='+lEach[1]);
end;
end;
FreeAndNil(lGroups);
FreeAndNil(lEach);
end;
var
gTest: TStringList;
j: Integer;
begin
gTest:=Parse(t);
for j := 0 to Pred(gTest.Count) do
begin
writeln(gTest.Names[j],' = ',gTest.ValueFromIndex[j]);
end;
end.
--
Más información sobre la lista de distribución Lazarus-es