Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Saber cantidad de lineas que se van a leer de un fichero texto... (https://www.clubdelphi.com/foros/showthread.php?t=42110)

Lester 04-04-2007 15:41:46

Saber cantidad de lineas que se van a leer de un fichero texto...
 
Hola a todos, mi problema es el siguiente:

Tengo que realizar un programita que lee los datos de un fichero texto, pero el caso es que quiero poner un Gauge para indicarle al usuario por dónde va el estado de la lectura del fichero y no sé como asignarle al Gauge la propiedad MaxValue puesto que no conozco la cantidad de líneas total que tiene el fichero texto. Se podrá hacer???, o sea, leer previamente la cantidad total de líneas que tiene el fichero texto y luego cuando las vaya leyendo ir incrementando el Gauge...???

Desde ya muchas gracias...

Neftali [Germán.Estévez] 04-04-2007 16:04:08

Depende del tipo de fichero y de cómo lo estés leyendo.
¿Qué estructura tiene?
¿Lo lees mediante TStrings?

basti 04-04-2007 17:40:00

Si vas a usar un archivo de texto leyéndolo secuencialmente, no podrás saber el número de líneas por adelantado. Si sólo lo quieres saber para usar un Gauge, te puedes basar en el tamaño del archivo y usar los bytes.
Código Delphi [-]
var
  f : file of Byte;
  f1 : TextFile;
  s : string;
begin
  AssignFile(f, 'archivo.txt');
  Reset(f);
  gauge1.MaxValue := Filesize(f);
  CloseFile(f);
  AssignFile(f1, 'archivo.txt');
  Reset(f1);
  while not Eof(f) do
  begin
    Readln(f, s);
    Gauge1.Position := Gauge1.Position + Length(s) + 2;
  end;
  CloseFile(f);
end;
Primero abrimos el archivo como si fuese binario, con valor 1 para el tamaño del registro. Así Filesize nos devuelve el tamaño en bytes (Se podría usar también findfirst, por ejemplo, para saber el tamaño del archivo).

Luego lo vamos leyendo y contando los bytes, el +2 es para contar también el salto de línea (podría ser +1 dependiendo de si usa sólo #13 para salto de línea en vez de #13#10).

roman 04-04-2007 17:50:53

¡Estupenda idea basti! Me la apunto :)

// Saludos

Lester 04-04-2007 17:57:02

OK, funciona perfectamente...
 
Hola a todos nuevamente..., basti me ha dado la solución perfecta, todo funciona perfectamente... un millón de gracias nuevamente basti y a todos los que de una forma u otra hacen posible que este foro exista...


La franja horaria es GMT +2. Ahora son las 19:50:51.

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