[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