Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 21-01-2005
Avatar de JuanBCT
JuanBCT JuanBCT is offline
Miembro
 
Registrado: ago 2004
Ubicación: Campana, Argentina
Posts: 57
Poder: 23
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
  #2  
Antiguo 22-01-2005
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 31
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
  #3  
Antiguo 26-01-2005
Avatar de JuanBCT
JuanBCT JuanBCT is offline
Miembro
 
Registrado: ago 2004
Ubicación: Campana, Argentina
Posts: 57
Poder: 23
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
  #4  
Antiguo 27-01-2005
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 31
Lepe Va por buen camino
Eso me pasa por listillo jejeje, bueno , pues vamos a lo que vamos:

Código Delphi [-]
function DelimitedText(lista:TStringList;Delimiter:char):string;
var i:integer;
begin
  for i:= 0 to lista.count-2 do
     result := result+ lista[i]+ Delimiter;
  if lista.count > 1 then
     result:= result+lista[lista.count-1]
end;

Vas a tener que crear otra rutina para añadir las comillas dobles, pero eso te lo dejo a ti.

Espero que te sirva
Responder Con Cita
  #5  
Antiguo 27-01-2005
Avatar de JuanBCT
JuanBCT JuanBCT is offline
Miembro
 
Registrado: ago 2004
Ubicación: Campana, Argentina
Posts: 57
Poder: 23
JuanBCT Va por buen camino
Hola, Lepe; finalmente solucioné el tema haciendo dicha rutina... les muestro como me quedó el botón "Importar":

Código Delphi [-]
procedure TImport_form.FlatSpeedButton1Click(Sender: TObject);
var
Archivocsv, Campos: Tstringlist;
I: Integer;
S:string;
begin
Datamodule1.Client.Last;
//StringLists para el archivo y para los campos
Archivocsv:=Tstringlist.create;
Campos:=Tstringlist.create;
  try
  //Cargo el archivo a la stringlist Archivocsv...
  Archivocsv.LoadFromFile(Filelistbox1.FileName);
  //Rutina para agregar las doble comillas...
  for I:=1 to Archivocsv.Count -1 do
      begin
      //Paso c/línea a un string para modificarla a mi gusto con insert
      S:=Archivocsv.Strings[i];
       //Modifico...
       Insert('"', S, 1);
       Insert('"', S, (Length(S))+1);
       Insert('"',S,Pos(',',S));
       Insert('"',S,Pos(',',S)+1);
      Archivocsv.Strings[i]:=S;
      end;
  Archivocsv.SaveToFile(Filelistbox1.FileName);
  //---------------------------------------------
  Archivocsv.LoadFromFile(Filelistbox1.FileName);
  //Separo en Campos con COMMATEXT
  for I:=0 to Archivocsv.Count -1 do
      begin
       CoolGauge1.Progress:=I*100 div Archivocsv.Count;
       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.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;

Me queda una inquietud... en el caso que yo quiera incluir la función que me pasaste en el mensaje anterior; como o en q parte lo hago?
Gracias por tu tiempo...
Responder Con Cita
  #6  
Antiguo 27-01-2005
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 31
Lepe Va por buen camino
En realidad mi funcion ahora no te hace falta, ya que recorres las lineas para poner las comillas dobles,así que aprovecha ese mismo ciclo para poner el separador coma.


Mi funcion simula el DelimitedText y Delimiter que existe en los TStringlist de delphi 6 o superior.

Despues de Releer todo el hilo, no creo que lo necesites; de todas formas te explico como va:

MIStringlist:
Código:
Pepe
Manuel
Jose Manuel
Antonio
y quieres que salga esto:
Código:
Pepe;Manuel;Jose Manuel;Antonio
Esto se consigue con una llamada del tipo:
Código Delphi [-]
var s:string;
s:= DelimitedText(MiStringList,';');

Saludos
Responder Con Cita
  #7  
Antiguo 27-01-2005
Avatar de JuanBCT
JuanBCT JuanBCT is offline
Miembro
 
Registrado: ago 2004
Ubicación: Campana, Argentina
Posts: 57
Poder: 23
JuanBCT Va por buen camino
Estaba interesado en tu función porque ahora me pidieron pasar 3 campos más; me dí cuenta que no lo iba a poder seguir haciendo así porque yo buscaba la coma con la función POS de los string. El inconveniente era q esta devuelve la posición del 1er caracter q uno busca en la línea; ahora q tenía varias comas no iba a poder seguir insertandole comillas!
Pero bueno, lo acabo de solucionar copiando cada "campo" en strings temporales para así ponerles las comillas a c/u y luego concatenar todo; haciendo la línea. Gracias por todo! Les dejo el código final de la procedure q hice, por si a alguno le interesa...

Código Delphi [-]
procedure TImport_form.FlatSpeedButton1Click(Sender: TObject);
var
Archivocsv, Campos: Tstringlist;
I: Integer;
S,A,B,C,D,E,F,G,H,Y:string;
begin
Datamodule1.Client.Last;
//StringLists para el archivo y para los campos
Archivocsv:=Tstringlist.create;
Campos:=Tstringlist.create;
  try
  //Cargo el archivo a la stringlist Archivocsv...
  Archivocsv.LoadFromFile(Filelistbox1.FileName);
  //Rutina para agregar las doble comillas...
  for I:=1 to Archivocsv.Count -1 do
      begin
      //Paso c/línea a un string para modificarla a mi gusto con insert
      S:=Archivocsv.Strings[i];
       //Modifico...
       Insert('"', S, 1);
       Insert('"', S, (Length(S))+1);
       //Pone " antes y después de la 1er coma (ahora tengo q hacer q recorra
        Insert('"',S,Pos(',',S));
        Insert('"',S,Pos(',',S)+1);
        //Voy separando cada campo, y les pongo comillas para luego
        //concatenarlos...
        E:=Copy(S,0,Pos(',',S));

        A:=Copy(S,Pos(',',S)+1,((Length(S))-Pos(',',S)));
        Insert('"',A,Pos(',',A));
        Insert('"',A,Pos(',',A)+1);
        F:=Copy(A,0,Pos(',',A));

        B:=Copy(A,Pos(',',A)+1,((Length(A))-Pos(',',A)));
        Insert('"',B,Pos(',',B));
        Insert('"',B,Pos(',',B)+1);
        G:=Copy(B,0,Pos(',',B));

        C:=Copy(B,Pos(',',B)+1,((Length(B))-Pos(',',B)));
        Insert('"',C,Pos(',',C));
        Insert('"',C,Pos(',',C)+1);
        H:=Copy(C,0,Pos(',',C));
        //D queda como está....
        D:=Copy(C,Pos(',',C)+1,((Length(C))-Pos(',',C)));
        //Ahora, concateno todo en Y
        Y:=concat(E,F,G,H,D);

       Archivocsv.Strings[i]:=Y;
      end;
  Archivocsv.SaveToFile(Filelistbox1.FileName);
  //---------------------------------------------
  Archivocsv.LoadFromFile(Filelistbox1.FileName);
  //Separo en Campos con COMMATEXT
  for I:=0 to Archivocsv.Count -1 do
      begin
       CoolGauge1.Progress:=I*100 div Archivocsv.Count;
       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.Insert;
       Datamodule1.Client['CLI_NUM']:=ncli + 1;
       //==============================================
       Datamodule1.Client['CLI_NOM']:=Campos[0];
       Datamodule1.Client['CLI_MAIL']:=Campos[1];
       Datamodule1.Client['CLI_TEL']:=Campos[2];
       Datamodule1.Client['CLI_CALIDAD']:=Campos[3];
       Datamodule1.Client['CLI_TELLAB']:=Campos[4];
       Datamodule1.Client.Post;
      end;
     finally
  Archivocsv.Free;
  Campos.Free;
end;
end;

Saludos!!!

Última edición por JuanBCT fecha: 27-01-2005 a las 19:23:08. Razón: Correción
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 03:39:09.


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