Hola.
Cita:
Empezado por CM6ISG
...
Ahora #POX #SQX #EMX #FTXXXXXXX #FRXXXXXXX fíjate en el detalle te puse (X) ese dato varia en depende de la frecuencia del radio, modo potencia, etc.
Lo otro seria como cambio ShowMessage(lCampos.Text); en su lugar necesito 5 variables con cada una de sus cadenas.
Ejemplo:
Power:=(‘POX’)
Qsl:=(‘SQX’)
Modo:=(‘EMX’)
FTX:=(‘XXXXXXX’)
FTR:=(‘XXXXXXX’)
|
Si deseas incluir las cadenas 'FT' y 'FR', sólo tenes que cambiar el valor de inicio en la función
Copy. Y para pasar a variables asignar los valores del StringList:
Código Delphi
[-]
...
ix:= lCampos.Count-1;
lCampos[ix-1]:= Copy(lCampos[ix-1], 1, MaxInt);
lCampos[ix] := Copy(lCampos[ix] , 1, MaxInt);
Power:= lCampos[0];
Qsl := LCampos[1];
Modo := lCampos[2];
FTX := lCampos[3];
FTR := lCampos[4];
...
Pero si es factible la reutilización de esas variables tal vez te convenga encapsularlas en un registro. Eso te permitiría enviar todos los valores en un solo parámetro, como por ejemplo:
Código Delphi
[-]
...
type
TPortValues = record
Power: string;
Qsl : string;
Modo : string;
FTX : string;
FTR : string;
end;
procedure ShowValues(TS: TStrings; pv: TPortValues);
begin
TS.Add(pv.Power);
TS.Add(pv.Qsl);
TS.Add(pv.Modo);
TS.Add(pv.FTX);
TS.Add(pv.FTR);
end;
procedure TForm1.Button1Click(Sender: TObject);
const
DLM = #13#10;
var
Str: string;
ix: Integer;
lCampos: TStrings;
pv: TPortValues;
begin
Str:= '#PO0' + DLM + '#SQS' + DLM + '#EM0' + DLM + '#FT0715000' + DLM + '#FR0711200';
lCampos:= TStringList.Create;
try
ExtractStrings(['#'],[' '], PChar(Str), lCampos);
ix:= lCampos.Count-1;
lCampos[ix-1]:= Copy(lCampos[ix-1], 1, MaxInt);
lCampos[ix] := Copy(lCampos[ix] , 1, MaxInt);
pv.Power:= lCampos[0];
pv.Qsl := LCampos[1];
pv.Modo := lCampos[2];
pv.FTX := lCampos[3];
pv.FTR := lCampos[4];
ShowValues(ListBox1.Items, pv);
finally
lCampos.Free;
end;
end;
Saludos