Sign in Join

Live chat for Free Pascal, Lazarus, Delphi and every Pascal programmer.

Mailing lists / lazarus-es / 2022-01

Parseador de etiquetas

4 messages · 3 people · –

Reply by email Subscribe to this list Your subscription

Read-only archive. Use j and k to move between messages.

Maxi

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.

<CALL:5>LU3HH <BAND:3>40m <MODE:3>SSB <QSO_DATE:8>20220110 <TIME_ON:6>203524 <A_INDEX:2>10 <ANT_AZ:1>0 <ANT_EL:1>0 <BAND_RX:3>40m <CONT:2>SA <COUNTRY:9>Argentina <CQZ:2>13 <DXCC:3>100 <EQSL_QSL_RCVD:1>R <EQSL_QSL_SENT:1>R <ITUZ:2>14 <LOTW_QSL_RCVD:1>R <LOTW_QSL_SENT:1>R <SUBMODE:3>LSB <MY_COUNTRY:9>Argentina <MY_CQ_ZONE:2>13 <MY_DXCC:3>100 <MY_GRIDSQUARE:6>FF78uq <MY_ITU_ZONE:2>14 <OPERATOR:6>LU4HNE <OWNER_CALLSIGN:6>LU4HNE <STATION_CALLSIGN:6>LU4HNE <PROGRAMID:7>LOG4OM2 <PROGRAMVERSION:8>2.18.0.0 <QSL_RCVD:1>R <QSL_RCVD_VIA:1>E <QSL_SENT:1>R <QSL_SENT_VIA:1>E <QSO_COMPLETE:1>Y <QSO_DATE_OFF:8>20220110 <RST_RCVD:2>59 <RST_SENT:2>59 <SWL:1>N <TIME_OFF:6>203524 <TX_PWR:3>100 <K_INDEX:1>2 <MY_LAT:8>-31.3125 <MY_LON:8>-64.2917 <PFX:3>LU3 <QSO_RANDOM:1>Y <SFI:3>102 <APP_L4ONG_SATELLITE_QSO:1>N <APP_L4ONG_CONTEST:1>N <APP_L4ONG_QSO_CONFIRMATIONS:555>
<EOR>

Saludos
------------ pr�xima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://lists.lazarus-ide.org/pipermail/lazarus-es/attachments/20220111/c0c796e6/attachment.htm>

Reply by email

José Mejuto
to Maxi

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.

Reply by email

Maxi
to José Mejuto

impresionante, me solucionaste el tema. Muchas gracias

El mi�, 12 ene 2022 a las 6:09, Jos� Mejuto via Lazarus-es (< lazarus-es en lists.lazarus-ide.org>) escribi�:

Show quoted text 52 lines
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. -- _______________________________________________ Lazarus-es mailing list Lazarus-es en lists.lazarus-ide.org https://lists.lazarus-ide.org/listinfo/lazarus-es
El que pregunta aprende, y el que contesta aprende a responder. No a la obsolecencia programada: http://www.rtve.es/noticias/20110104/productos-consumo-duran-cada-vez-menos/392498.shtml ------------ pr�xima parte ------------ Se ha borrado un adjunto en formato HTML... URL: <http://lists.lazarus-ide.org/pipermail/lazarus-es/attachments/20220112/842edfd2/attachment.htm>

Reply by email

Pedro Pablo Oviedo Vera
to Maxi: Existe alguna libreria para parsear algo como esto? Todo lo que est� entre corresponde…

pudieras usar expresiones regulares con TRegExp .....Gracias.

Saludos
pp

MSc. Ing. Pedro Pablo Oviedo Vera Dpto. de Proyectos. Oficina Central. Empresa de Proyectos e Ingenier�a del Ministerio de la Agricultura.ENPA. Boyeros y Conill, Piso 10 Edif MINAG Telef. 884 7197 SIP:23000116 "Donde haya un �rbol que plantar, pl�ntalo t�. Donde haya un error que enmendar, enmi�ndalo t�. Donde haya un esfuerzo que todos esquivan, hazlo t�. S� t� el que aparta la piedra del camino." Gabriela Mistral. ?Temo el d�a en que las tecnolog�as superen nuestra humanidad. El mundo solo tendr� una generaci�n de idiotas?. A. Einstein ?Es preferible una soluci�n insignificante salida de cabeza propia; que una genial copiada de otro, sobre todo sin entenderla?. NGPA On mar, 2022-01-11 at 17:59 -0300, Maxi via Lazarus-es wrote: > > 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. > > <CALL:5>LU3HH <BAND:3>40m <MODE:3>SSB <QSO_DATE:8>20220110 > <TIME_ON:6>203524 <A_INDEX:2>10 <ANT_AZ:1>0 <ANT_EL:1>0 > <BAND_RX:3>40m <CONT:2>SA <COUNTRY:9>Argentina <CQZ:2>13 <DXCC:3>100 > <EQSL_QSL_RCVD:1>R <EQSL_QSL_SENT:1>R <ITUZ:2>14 <LOTW_QSL_RCVD:1>R > <LOTW_QSL_SENT:1>R <SUBMODE:3>LSB <MY_COUNTRY:9>Argentina > <MY_CQ_ZONE:2>13 <MY_DXCC:3>100 <MY_GRIDSQUARE:6>FF78uq > <MY_ITU_ZONE:2>14 <OPERATOR:6>LU4HNE <OWNER_CALLSIGN:6>LU4HNE > <STATION_CALLSIGN:6>LU4HNE <PROGRAMID:7>LOG4OM2 > <PROGRAMVERSION:8>2.18.0.0 <QSL_RCVD:1>R <QSL_RCVD_VIA:1>E > <QSL_SENT:1>R <QSL_SENT_VIA:1>E <QSO_COMPLETE:1>Y > <QSO_DATE_OFF:8>20220110 <RST_RCVD:2>59 <RST_SENT:2>59 <SWL:1>N > <TIME_OFF:6>203524 <TX_PWR:3>100 <K_INDEX:1>2 <MY_LAT:8>-31.3125 > <MY_LON:8>-64.2917 <PFX:3>LU3 <QSO_RANDOM:1>Y <SFI:3>102 > <APP_L4ONG_SATELLITE_QSO:1>N <APP_L4ONG_CONTEST:1>N > <APP_L4ONG_QSO_CONFIRMATIONS:555> > <EOR> > > Saludos > _______________________________________________ > Lazarus-es mailing list > Lazarus-es en lists.lazarus-ide.org > https://lists.lazarus-ide.org/listinfo/lazarus-es

Reply by email