Ver Mensaje Individual
  #1  
Antiguo 19-01-2005
Avatar de JuanBCT
JuanBCT JuanBCT is offline
Miembro
 
Registrado: ago 2004
Ubicación: Campana, Argentina
Posts: 57
Reputación: 20
JuanBCT Va por buen camino
Acerca de CommaText

Hola, tengo una pequeña duda con la propiedad Commatext de los Stringlist... espero q me puedan ayudar. Estoy haciendo un procedimiento que toma los datos de una libreta de direcciones del Outlook (exportada a CSV). Primero cargo el archivo en un stringlist; y luego en otro separo por campos, con commatext. El problema que tengo es que los nombres que tienen un espacio en el medio, son separados por commatext igual q si hubiera una coma. Por ej, si yo tengo estas líneas:

Juan,juanbecette81@yahoo.com.ar
Juan José Becette,juanbecette81@yahoo.com.ar


En el primer caso, campos[0] contendría "Juan", y campos[1] contendría "juanbecette81@yahoo.com.ar"; q es precisamente lo que quiero. Pero en el segundo caso, me lo pasaría de la siguiente manera: campos[0]="Juan" y campos[1]="José". ¿Hay algo que esté haciendo mal? En algún mensaje del foro leí que los stringlist tienen una propiedad llamada Delimiter, donde uno especifica el caractér delimitador, pero no lo puedo encontrar (aunque en teoría Commatext separa donde encuentra una coma, no?). Quizás esa propiedad no la encuentre porque uso Delphi 3...

Bueno, voy a estar muy agradecido si alguien me puede ayudar. Les adjunto el código del procedimiento que hice, por si acaso:

Código Delphi [-]
procedure TImport_form.FlatSpeedButton1Click(Sender: TObject);
var
Archivocsv, Campos: Tstringlist;
I: Integer;
begin

//Creo las dos StringList: una contiene el archivo entero, otra los campos...
Archivocsv:=Tstringlist.create;
Campos:=Tstringlist.create;
  try
  //Cargo el archivo a la stringlist Archivocsv...
  Archivocsv.LoadFromFile(Filelistbox1.FileName);
  //Separo cada línea en campos con COMMATEXT y paso c/u al arreglo Campos
  for I:=0 to Archivocsv.Count -1 do
    begin
    Campos.clear;
    Campos.CommaText:=ArchivoCsv[i];

   //Paso c/campo a la tabla
   //Pone nro de cliente automáticamente...
   if Datamodule1.Client.RecordCount=0 then ncli:=0
      else ncli:=Datamodule1.Client['CLI_NUM'];
   Datamodule1.Client.Last;
   Datamodule1.Client.Insert;
   Datamodule1.Client['CLI_NUM']:=ncli + 1;
   //==============================================
    Datamodule1.Client['CLI_NOM']:=Campos[0];
    Datamodule1.Client['CLI_MAIL']:=Campos[1];
    Datamodule1.Client.Post;
    end;
    finally
    Archivocsv.Free;
    Campos.Free;
  end;
end;

Gracias, y saludos!

Última edición por JuanBCT fecha: 19-01-2005 a las 16:05:28.
Responder Con Cita