Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 04-07-2013
avechuche avechuche is offline
Miembro
NULL
 
Registrado: may 2013
Posts: 23
Poder: 0
avechuche Va por buen camino
Gracias ecfisa, funciona perfectamente. Ahora viene otra duda (Soy muy nuevo en esto)
Yo no lo quiero poner en un ListBox, quiero poner esos dos valores en cada columna de mi listbox
Hice lo siguiente

Creo el TStringList antes de entrar al "While" que recorre el ".txt"

Código Delphi [-]
arrayColumnas := TStringList.Create
Llamo a la funcion
Código Delphi [-]
ExtractStrings(['|'], [], PChar(S), arrayColumnas)
// Donde "S" es cada linea del ".txt" y arrayColumnas es del tipo TStringList.

Después recorro "arrayColumnas" y agrego los valores correspondientes a las columnas de mi ListView.
El problema esta que siempre me agrega la primer linea del ".txt" al ListView. Si tengo un ".txt" asi

1|Gonzalo
2|Pedro
3|Sofia


El ListView me devuelve

1|Gonzalo
1|Gonzalo
1|Gonzalo


Tengo que hacer esto
Código Delphi [-]
arrayColumnas := TStringList.Create
dentro del While asi resetea arrayColumnas ?

Osea lo hice y anda perfecto, pero está bien aplicado? porque me da que esta mal crear el TStringList cada vez que cambio la linea.
Responder Con Cita
  #2  
Antiguo 04-07-2013
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 38
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Cita:
Empezado por avechuche Ver Mensaje
Tengo que hacer esto
Código Delphi [-]
arrayColumnas := TStringList.Create
dentro del While asi resetea arrayColumnas ?

Osea lo hice y anda perfecto, pero está bien aplicado? porque me da que esta mal crear el TStringList cada vez que cambio la linea.
Hola avechuche.

Si creas y liberas el stream cada vez, no tendría que haber problemas. Mejor tal vez sea crearlo antes del ciclo while, vaciarlo con el método Clear y liberarlo despues.

Algo como:
Código Delphi [-]
  stream := TStringList.Create; // crear
  try
    while (...) do
    begin
      //... 
      stream.Clear   //<== vaciar
    end
  finally
    stream.Free  // liberar
  end;

También te podrías ahorrar todo el tema de leer el archivo recorriéndolo con while si usas el método LoadFromFile de TStrings. De ese modo podes acceder a cada línea del archivo mediante el índice.

Pero siendote sincero, no alcanzo a entender claramente como deseas que queden las líneas leidas desde el archivo en el stream.

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #3  
Antiguo 04-07-2013
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 23
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
avechuche,

Cita:
Empezado por avechuche
...agrego los valores correspondientes a las columnas de mi ListView...El problema esta que siempre me agrega la primer linea del ".txt"...
Revisa este código:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
   i,j : Integer;
   StrList : TStringList;

begin

   ListView1.ViewStyle := vsReport;
   ListView1.Clear;

   with TStringList.Create do
   try
      LoadFromFile('ARCHIVO.TXT');
      StrList := TStringList.Create;
      for i := 0 to Count-1 do
      begin
         ExtractStrings(['|'], [], PChar(Strings[i]), StrList);
         with ListView1.Items.Add do
         begin
            SubItems.Add(StrList.Strings[0]);
            SubItems.Add(StrList.Strings[1]);
            StrList.Clear;
         end;
      end;
      StrList.Free;
   finally
      Free;
   end;

end;
El código anterior es una variante del sugerido en el Msg #5 adaptada a un control TListView.

Espero sea útil

Nelson.
Responder Con Cita
  #4  
Antiguo 04-07-2013
avechuche avechuche is offline
Miembro
NULL
 
Registrado: may 2013
Posts: 23
Poder: 0
avechuche Va por buen camino
Aaaaa mira vos asi se hace mas cortito! Muchas gracias gente por la ayuda. Ahora achico codigo como loco
Responder Con Cita
  #5  
Antiguo 04-07-2013
avechuche avechuche is offline
Miembro
NULL
 
Registrado: may 2013
Posts: 23
Poder: 0
avechuche Va por buen camino
Aaaaaa perfecto! Eso es lo que buscaba. TStringList.Clear;

Lo que yo quiero hacer es lo siguiente, tengo un archivo txt, cada linea del txt esta compuesta por "algo de texto por aca, tiene que haber si o si|aca puede haber o no texto", digamos algo asi
1|gonzalo
2|jose
3|maria

4|
Esos serian las lineas de mi txt válidas, lo que no puede haber son lineas que no tengan nada antes de la barra "|" osea
|pepe
|feo

esas lineas son invalidas, pero eso lo compruebo a medida que voy leyendo el txt.

Ahora las lineas correctas las tengo que pasar a un Listview por eso necesito parsearlas por "|" para poner la primera parte en la primer columna del ListView y la segunda parte va a la segunda columna del ListView.
Que pasaba? Cuando parseba por "|" por alguna razon desp de cada parte del texto me ponia un salgo de linea que todavia sigo sin entender porque y si desp queria guardar los datos que habia en el ListView, me agregaba entre cada registro un salto de linea que no me gustaba, pero la funcion ExtractsString funciona de maravillas.

Con respecto a hacerlo con LoadFromFile tenes razon, lo que pasa es que yo usaba 2 TStringList uno para leer el archivo como vos me decias y el otro para almacenar las lineas parseados, desp de idas y vueltas (pensando que era eso lo que me agregaba el salto de linea a mis lineas) cambie el TStringList que leia el archivo por el "While" y adentro deje el TStringList que parseaba las lineas. Ahora tmb saque el TStringList que parsea las lineas y lo reemplaze por la funcion ExtractsString y segui dejando el "While".
Vos decis que lea el txt con LoadFromFile? Es más rapido?

PD: Si digo una vez mas TStringList bomito ^^
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
¿como parsear texto? JXJ Varios 9 31-08-2010 22:31:02
parsear xml + clase DOMParser gustavoh JAVA 0 27-07-2006 15:39:25
Duda Tstring wildnetboy C++ Builder 9 16-06-2006 21:19:46
Convertir un TString a PWideChar bustio OOP 3 01-10-2004 04:50:16
TString en los caption buitrago Varios 3 14-08-2004 19:54:13


La franja horaria es GMT +2. Ahora son las 03:07:51.


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