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 12-09-2008
Avatar de Carmelo Cash
Carmelo Cash Carmelo Cash is offline
Miembro
 
Registrado: jul 2003
Ubicación: Buenos Aires
Posts: 261
Poder: 21
Carmelo Cash Va por buen camino
Cantidad de líneas de un archivo txt

Hola Foro:
Escribo nuevamente este mensaje porque no sé si el que escribí antes no llegó o no lo envié:

El tema es saber la cantidad de líneas que tiene un archivo txt sin leerlo todo.

Actualmente hago:

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
Var
Fichero: TextFile;
Linea: String;
Contador: integer;
begin
Contador :=0;
AssignFile(Fichero,'C:\Prueba.txt');
Reset(Fichero);
While Eof(Fichero)=False Do
  Begin
  Readln(Fichero,Linea);
  Inc(Contador);
 end;
Closefile(Fichero);
ShowMessage(IntToStr(Contador));   // << Cantidad de Líneas


Pero me parece mucha cosa para rescatar este dato, tal vez haya una forma mejor.

Saludos y gracias.
Responder Con Cita
  #2  
Antiguo 12-09-2008
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Hola Carmelo Cash,
Sabiendo que estás empleando ese método para abrir archivos, tal vez te interese saber de la función FileSize() que devuelve el "tamaño" en lineas de un archivo.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #3  
Antiguo 12-09-2008
Avatar de Carmelo Cash
Carmelo Cash Carmelo Cash is offline
Miembro
 
Registrado: jul 2003
Ubicación: Buenos Aires
Posts: 261
Poder: 21
Carmelo Cash Va por buen camino
No...

Hola. Gracias por tu ayuda, pero el archivo prueba.txt tiene 32 líneas,
con el procedimiento que uso me dice 32, pero con

Código Delphi [-]
ShowMessage(intToStr( FileSize(Fichero) ));

dice "2" . ¿?

Habrá otro truco?
Responder Con Cita
  #4  
Antiguo 12-09-2008
Avatar de cHackAll
[cHackAll] cHackAll is offline
Baneado?
 
Registrado: oct 2006
Posts: 2.159
Poder: 20
cHackAll Va por buen camino
Cita:
Empezado por Delphius Ver Mensaje
Hola Carmelo Cash,
Sabiendo que estás empleando ese método para abrir archivos, tal vez te interese saber de la función FileSize() que devuelve el "tamaño" en lineas de un archivo.

Saludos,
__________________
RTFM > STFW > Foro > Truco > Post > cHackAll > KeBugCheckEx
Responder Con Cita
  #5  
Antiguo 12-09-2008
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por Delphius Ver Mensaje
la función FileSize() que devuelve el "tamaño" en lineas de un archivo.
Devuelve el tamaño en bytes o número de records, pero no de líneas.

// Saludos
Responder Con Cita
  #6  
Antiguo 12-09-2008
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Cita:
Empezado por roman Ver Mensaje
Devuelve el tamaño en bytes o número de records, pero no de líneas.

// Saludos
¡Tienes razón roman! ¡Que metida de pata que cometí!

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #7  
Antiguo 12-09-2008
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Cita:
Empezado por Delphius
¡Tienes razón roman! ¡Que metida de pata que cometí!
El que no dice ni mú es acaso quien esté metiendo la pata. En tu caso, Delphius, puede decirse que aventuraste una solución que de improviso no ha resultado correcta.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #8  
Antiguo 12-09-2008
Avatar de cHackAll
[cHackAll] cHackAll is offline
Baneado?
 
Registrado: oct 2006
Posts: 2.159
Poder: 20
cHackAll Va por buen camino
Cita:
Empezado por dec Ver Mensaje
El que no dice ni mú es acaso quien esté metiendo la pata...
mú múúú !!!
__________________
RTFM > STFW > Foro > Truco > Post > cHackAll > KeBugCheckEx
Responder Con Cita
  #9  
Antiguo 12-09-2008
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Mu

// Saludos
Responder Con Cita
  #10  
Antiguo 12-09-2008
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Hala, ahora todos a decir mú... ¡que no lo decía yo por tanto, ni por vosotros! ¡Aludidos! ¡Desvirtuadores!
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #11  
Antiguo 12-09-2008
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Cita:
Empezado por dec Ver Mensaje
Hola,



El que no dice ni mú es acaso quien esté metiendo la pata. En tu caso, Delphius, puede decirse que aventuraste una solución que de improviso no ha resultado correcta.
Cita:
Empezado por cHackAll Ver Mensaje
mú múúú !!!
Cita:
Empezado por roman Ver Mensaje
Mu

// Saludos
Muuuuuuu!

Bueno ¿Entonces como queda la cosa? ¿Se puede saber?

Código Delphi [-]
function FileLines(Archivo: string): integer;
var arch: TStrings;
begin
  result := 0;
  arch := TStrings.Create;
  try
    arch.LoadFromFile(Archivo);
    result := arch.Count;
  finally
    arch.Free;
  end;
end;

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #12  
Antiguo 12-09-2008
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por Delphius Ver Mensaje
Bueno ¿Entonces como queda la cosa? ¿Se puede saber?
Pues bueno, yo no crea que haya muchas opciones para contar las líneas; no es una propiedad que se guarde como parte del archivo. A fin de cuentas un archivo de texto no es más que una secuencia de caracteres siendo las parejas #13#10 las que "marcan" una nueva línea, así que pienso que cualquier método en el fondo tiene que abrir el archivo y contar cuantas parejas de éstas hay.

Mu.

// Saludos
Responder Con Cita
  #13  
Antiguo 12-09-2008
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Pienso lo mismo que Román, ahora más, porque él lo piensa. A menos que los archivos sean "nuestros", y acaso podamos incluir en ellos cuántas líneas contienen, además del contenido del archivo, de una forma u otra habrá que leer el archivo hasta el final, me temo, puesto que de otra forma no imagino cómo podríamos contar todas sus líneas.

Mú también.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #14  
Antiguo 12-09-2008
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.557
Poder: 25
egostar Va camino a la fama
Hola

Y en el supuesto caso que se tratara de un achivo con cadenas de una longitud fija? Sin los caracteres de LF y CR?



amúúúú
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #15  
Antiguo 12-09-2008
Avatar de cHackAll
[cHackAll] cHackAll is offline
Baneado?
 
Registrado: oct 2006
Posts: 2.159
Poder: 20
cHackAll Va por buen camino
Cita:
Empezado por egostar Ver Mensaje
Hola

Y en el supuesto caso que se tratara de un achivo con cadenas de una longitud fija? Sin los caracteres de LF y CR?



amúúúú
Eso con un GetFileSize(hFile, nil) div LongitudFija.

Muú !!!
__________________
RTFM > STFW > Foro > Truco > Post > cHackAll > KeBugCheckEx
Responder Con Cita
  #16  
Antiguo 16-09-2008
Avatar de Carmelo Cash
Carmelo Cash Carmelo Cash is offline
Miembro
 
Registrado: jul 2003
Ubicación: Buenos Aires
Posts: 261
Poder: 21
Carmelo Cash Va por buen camino
Entonces ?...

Hola:
Muchas gracias a los que participaron, pero entonces mi código no es una burrada?

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
Var
Fichero: TextFile;
Linea: String;
Contador: integer;
begin
Contador :=0;
AssignFile(Fichero,'C:\Prueba.txt');
Reset(Fichero);
While Eof(Fichero)=False Do
  Begin
  Readln(Fichero,Linea);
  Inc(Contador);
 end;
Closefile(Fichero);
ShowMessage(IntToStr(Contador));   // << Cantidad de Líneas


Lo dejo así, y al que me critique le digo... Mu?
Responder Con Cita
  #17  
Antiguo 16-09-2008
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Cita:
Empezado por Carmelo Cash Ver Mensaje
Hola:
Muchas gracias a los que participaron, pero entonces mi código no es una burrada?

Código Delphi [-]procedure TForm1.Button1Click(Sender: TObject); Var Fichero: TextFile; Linea: String; Contador: integer; begin Contador :=0; AssignFile(Fichero,'C:\Prueba.txt'); Reset(Fichero); While Eof(Fichero)=False Do Begin Readln(Fichero,Linea); Inc(Contador); end; Closefile(Fichero); ShowMessage(IntToStr(Contador)); // << Cantidad de Líneas



Lo dejo así, y al que me critique le digo... Mu?
Efectivamente, no es una burrada. Es una solución.
Ahora, si te interesa... Delphi cuenta con unas clases que te pueden ser de mucha ayuda para abrir, guardar, y editar archivos. En un ejemplo que mostré anteriormente hice uso de la clase TStrings.
Además de poder trabajar con el archivo, te evitarás tener que ir contando... esta clase ya cuenta con la propiedad Count que te devolverá la cantidad de lineas.

Para saber más sobre la clase puedes buscar en los foros, que se ha comentado al respecto. Y no te olvides de leer la ayuda que ofrece Delphi.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #18  
Antiguo 16-09-2008
Avatar de cHackAll
[cHackAll] cHackAll is offline
Baneado?
 
Registrado: oct 2006
Posts: 2.159
Poder: 20
cHackAll Va por buen camino
Mucha razón Delphius pero me pregunto cuál sera más optima; TextFile vs TStrings (para este caso )

mú !
__________________
RTFM > STFW > Foro > Truco > Post > cHackAll > KeBugCheckEx
Responder Con Cita
  #19  
Antiguo 16-09-2008
Avatar de MAXIUM
MAXIUM MAXIUM is offline
Miembro
 
Registrado: may 2005
Posts: 1.488
Poder: 21
MAXIUM Va camino a la fama
Se me ocurre que si en en caso de que cada liena de texto sea igual... en longitud por lo menos, obten el tamaño del archivo con solo una línea. Luego cuando tengas el FICHERO con todas sus lineas obtines el valor total con filesize y lo divides por el de una línea.
Responder Con Cita
  #20  
Antiguo 16-09-2008
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Cita:
Empezado por cHackAll Ver Mensaje
Mucha razón Delphius pero me pregunto cuál sera más optima; TextFile vs TStrings (para este caso )

mú !
Hola Javier,
No más daba una idea. Al menos para mi es lo más fácil y rápido de emplear. ¿Tienes otra en mente? Porque me gustaría saber a que te refieres.

Ahora si quieres, propongo a TStringStream

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Leer una cierta cantidad de caracteres de una archivo. mcalmanovici Varios 9 22-01-2008 20:01:24
Leer archivo de texto y extraer lineas de el mp3968 API de Windows 1 19-05-2007 20:27:53
Saber cantidad de lineas que se van a leer de un fichero texto... Lester Varios 4 04-04-2007 17:57:02
Como saber cuantas lineas tiene un archivo de texto MRSAM .NET 3 28-03-2007 02:35:00
Averiguar el número de lineas de un archivo de texto Lionel Varios 1 29-03-2004 12:47:05


La franja horaria es GMT +2. Ahora son las 15:39:12.


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