Ver Mensaje Individual
  #6  
Antiguo 24-05-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Reputación: 36
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
Hola Oscarac.

Al tratarse de un archivo secuencial creo que vas a tener que hacer una lectura previa para contar el número de líneas si querés que la barra se comporte
de forma representativa. La función FileSize devuelve el número de registros de un archivo tipeado. Si el archivo no tiene tipo, como es el caso, toma por defecto un registro de 128 bytes.

Código Delphi [-]
...
function TForm1.NumFileLines(NomArch: string): Integer;
var
  F: TextFile;
begin
  AssignFile(F,NomArch);
  Reset(F);
  Result:= 0;
  while not Eof(F) do
  begin
    Readln(F);
    Inc(Result);
  end;
  CloseFile(F);
end;

procedure TForm1.ProcessFile(NomArch: string);
var
  F: TextFile;
  s: string;
begin
  AssignFile(F,NomArch);
  Reset(F);
  while not Eof(F) do
  begin
    ReadLn(F, s);
    (* Aca las operaciones que realices. Para el ejemplo muestra en Memo *)
    Memo1.Lines.Add(s);  
    ProgressBar1.StepIt; // Avanza Step posiciones en el ProgressBar
    // Application.ProcessMessages; (* de ser necesario *)
  end;
  CloseFile(F);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  ProgressBar1.Max:= NumFileLines('C:\ARCHIVO.TXT');
  ProgressBar1.Step:= 1;
  ProcessFile('C:\ARCHIVO.TXT');
end;
...


Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 24-05-2011 a las 15:50:10.
Responder Con Cita