PDA

Ver la Versión Completa : Problema con StringList y espacios


jars
08-05-2014, 22:33:34
Hola amigos.
Tengo el siguiente problema:
Desde un servidor recibo un string con el siguiente formato:
p.ej. 'Nombre=Federico Salvador,DNI=23232323' Esta es cortita pero vienen mas largas.
Al intentar usar StringList del siguiente modo:

parms := 'Nombre=Federico Salvador,DNI=23232323' ;
...

sl: TStringList.Create;
sl.CommaText := parms;


En sl en lugar de 2 elementos tengo 3 porque me separa
1 Nombre=Federico
2 Salvador
3 DNI=23232323

Hay alguna forma de solucionar esto?

Gracias

nlsgarcia
08-05-2014, 23:49:32
jars,


...recibo un string...'Nombre=Federico Salvador,DNI=23232323'...en lugar de 2 elementos tengo 3...¿Hay alguna forma de solucionar esto?...


Revisa este código:

procedure TForm1.Button1Click(Sender: TObject);
var
SL : TStringList;
S1 : String;
i : Integer;

begin

S1 := 'Name1= FirstName1 LastName1,DNI=1,Name2= FirstName2 LastName2,DNI=2';

SL := TStringList.Create;

ExtractStrings([','],[],PChar(S1),SL);

for i := 0 to SL.Count - 1 do
ShowMessage(SL);

SL.Free;

end;

El código anterior en Delphi 7 bajo Windows 7 Professional x32, [I]separa una variable string en sus partes componentes usando como delimitador el carácter ',' y muestra cada uno de los elementos individualmente.

Espero sea útil :)

Nelson.

jars
09-05-2014, 14:08:09
Gracias Nelson, es lo que necesitaba.
Abrazo

dec
09-05-2014, 14:55:11
Hola,

Por añadir otra opción, al menos a partir de Delphi 2007, existe la propiedad "StrictDelimiter" en "TStrings", que solventa el "problema de los espacios en blanco". Es decir que esto:


const
SOURCE_TEXT = 'Nombre=Federico Salvador,DNI=23232323';
var
s: string;
t: TStrings;
begin
t := TStringList.Create();
try
t.StrictDelimiter := true;
t.CommaText := SOURCE_TEXT;
for s in t do
begin
ShowMessage(s);
end;
finally
t.Free();
end;
end;


Mostrará en sendos mensajes:


Nombre=Federico Salvador
DNI=23232323


Tal como esperas.