Ver Mensaje Individual
  #3  
Antiguo 26-10-2004
Avatar de sitrico
[sitrico] sitrico is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Caracas, Venezuela
Posts: 295
Reputación: 24
sitrico Va por buen camino
Te respondo con gusto, porque tu pregunta me resolvio un problema. (pero con ftp1.get)

Yo para calcular el progreso hago lo siguiente:

Defino 2 variables privadas del formulario

Código Delphi [-]
Var
TamanoDescarga, TotalDescargado : Integer;

En la primera almaceno el total del tamaño (en bytes) de los archivos a descargar (en tu caso a subir).

La segunda contendrá el total de bytes de los archivos YA BAJADOS.

Primero fijas el valor:

Código Delphi [-]
TamanoDescarga := xxxxxxxx; // la suma en bytes
prg.Max := TamanoDescarga;

Luego hay que modificar los eventos del FTP: FTP1Work y FTP1AfterGet

Código Delphi [-]
procedure TfActualizacionOnLine.FTP1Work(Sender: TObject;
  AWorkMode: TWorkMode; const AWorkCount: Integer);
begin
prg.Position := TotalDescargado + AWorkCount;
end;

procedure TfActualizacionOnLine.FTP1AfterGet(ASender: TObject;
  VStream: TStream);
begin
TotalDescargado := TotalDescargado + vStream.Size;
end;

Para determinar el tamaño de c/u de los archivos uso:

Código Delphi [-]
Var
f : file;
Begin
AssignFile(f,NombreArchivo);
Reset(f,1);
Tamano := FileSize(f);
CloseFile(f);
End;

Es posible que no puedas usar el AfterGet porque trabajas con FTP.Put, pero despues de subir el archivo X puedes sumar

TotalDescargado := TotalDescargado + TamanoArchivo;

y te dará el mismo resultado.

Espero te sirva
__________________
Sitrico
Responder Con Cita