Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 19-01-2005
Avatar de JuanBCT
JuanBCT JuanBCT is offline
Miembro
 
Registrado: ago 2004
Ubicación: Campana, Argentina
Posts: 57
Poder: 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
  #2  
Antiguo 19-01-2005
Avatar de Héctor Randolph
[Héctor Randolph] Héctor Randolph is offline
Miembro Premium
 
Registrado: dic 2004
Posts: 882
Poder: 20
Héctor Randolph Va por buen camino
Hola Juan!

Una posible solución es que generes o modifiques el archivo que contiene los correos de la siguiente manera:

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

Cuando asignas texto a la propiedad CommaText se trabaja con el formato SDF y la cadena es separada por comas o espacios, opcionalmente puedes asignar comillas dobles para separar por bloques como en el ejemplo anterior.

Cita:
Empezado por JuanBCT
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?).
Efectivamente, el componente TStringList maneja dos propiedades para separar texto, CommaText y DelimitedText; son similares excepto que CommaText asume que siempre separas por comas y en DelimitedText opcionalmente puedes definir la propiedad Delimiter para cambiar el caracter que será utilizado para separar en lugar de la coma y también puedes definir QuotedChar para cambiar el caracter que encierra bloques entre comillas.

Cita:
Empezado por JuanBCT
Quizás esa propiedad no la encuentre porque uso Delphi 3...
Alguna vez utilicé Delphi 3, pero no recuerdo si TStringList tenía la propiedad DelimitedText.


Espero que te sea útil, un Saludo.

Última edición por Héctor Randolph fecha: 19-01-2005 a las 20:58:43.
Responder Con Cita
  #3  
Antiguo 19-01-2005
Avatar de JuanBCT
JuanBCT JuanBCT is offline
Miembro
 
Registrado: ago 2004
Ubicación: Campana, Argentina
Posts: 57
Poder: 20
JuanBCT Va por buen camino
Hola Héctor; gracias por tu respuesta!

Voy a probar hacer una rutina que recorra el archivo y que ponga las dobles comillas como me indicaste (ya que el Outlook los saca así, y sería muy engorroso ponerse a hacerlo manualmente)... aparte sigo sin encontrar la propiedad DelimitedText...

Saludos!
Responder Con Cita
  #4  
Antiguo 21-01-2005
Avatar de JuanBCT
JuanBCT JuanBCT is offline
Miembro
 
Registrado: ago 2004
Ubicación: Campana, Argentina
Posts: 57
Poder: 20
JuanBCT Va por buen camino
Saben que acabo de probar en Delphi 5 a ver si me aparecía la propiedad DelimitedText y Delimiter de los stringlist... y siguen sin aparecer! No tendré que declarar algo en el uses, por ejemplo?
Gracias...
Responder Con Cita
  #5  
Antiguo 22-01-2005
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
En la ayuda de delphi viene

Cita:
In TStringList

Capacity
CaseSensitive
Count
Duplicates
Objects
Sorted
Strings

Derived from TStrings

CommaText
DelimitedText
Delimiter

Names
QuoteChar
StringsAdapter
Text
Values
Además son propiedades de un Tstrings, por tanto lo tienen los combobox, listbox. etc.

Saludos
Responder Con Cita
  #6  
Antiguo 26-01-2005
Avatar de JuanBCT
JuanBCT JuanBCT is offline
Miembro
 
Registrado: ago 2004
Ubicación: Campana, Argentina
Posts: 57
Poder: 20
JuanBCT Va por buen camino
Hola! Te muestro lo q aparece en mi Help

In TStringList

Capacity
Count
Duplicates
Objects
Sorted
Strings

Derived from TStrings

CommaText
Names
StringsAdapter
Text
Values



Gracias por tu respuesta, de todas formas...
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 07:36:30.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi