danielmj,
Cita:
Empezado por danielmj
...Lo que trato de conseguir es que el progreso de la barra avance segun se divida el tamaño del archivo entre la cantidad elegida...
|
Revisa este código:
Código Delphi
[-]
procedure TForm1.Button1Click(Sender: TObject);
var
OpenDialog : TOpenDialog;
F1 : TFileStream;
Buffer : String;
CountRead : Integer;
FileLen : Integer;
begin
OpenDialog := TOpenDialog.Create(self);
OpenDialog.InitialDir := 'C:\';
OpenDialog.Options := [ofFileMustExist];
OpenDialog.Filter := 'All Files|*.*';
OpenDialog.FilterIndex := 1;
ProgressBar1.Min := 1;
ProgressBar1.Max := 100;
ProgressBar1.Position := 0;
if OpenDialog.Execute then
begin
try
F1 := TFileStream.Create(OpenDialog.FileName, fmOpenRead or fmShareDenyWrite);
FileLen:= MaxInt div 1024;
SetLength(Buffer, FileLen);
while F1.Position < F1.Size do
begin
CountRead := F1.Read(Buffer[1], FileLen);
ProgressBar1.Position := Trunc((F1.Position/F1.Size)*100);
Application.ProcessMessages;
end;
finally
F1.Free;
OpenDialog.Free;
end;
end;
end;
El código anterior
lee un archivo de cualquier tamaño en porciones (MaxInt div 1024) y muestra su progreso en un componente TProgressBar normalizado en el rango de 1 a 100.
Nota: La idea es mostrar el proceso de un archivo en función porcentual y
no en divisiones de su tamaño original, lo cual se adapta a cualquier tamaño de archivo
hasta un máximo de 2^63 - 1.
Espero sea útil
Nelson.