Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Internet
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 19-10-2004
Avatar de taita
taita taita is offline
Miembro
 
Registrado: sep 2003
Ubicación: Murcia, San Pedro del Pinatar
Posts: 115
Poder: 21
taita Va por buen camino
Question Ayuda con componentes Indy FTP

Hola a tod@s:
Pue eso mismo. Mis aplicaciones tienen un ftp que les permite subir y bajar documentos a una web. Todo funciona correctamente. Suben y bajan datos sin problema alguno.
Ahora he colocado un Progressbar para mostrar la transferencia de los datos, pero aqui es donde me ha surgido el problema.
Cómo indico cuánto le falta para subir? (por ejemplo en kb). ¿Cómo hago para que el progressbar se actualice según se suben estos datos?
Indico aqui el código que utilizo actualmente.

Código Delphi [-]
 procedure TfrmFTP.Button2Click(Sender: TObject);
 begin
   progressbar1.Position:=0;
   ftp1.Host:='ftp.misitio.com';
   ftp1.Username:='usuario';
   ftp1.Password:='password';
   ftp1.Port:=21;
   ftp1.Connect();
   progressbar1.Position:=20;
   if checkbox1.Checked then
     ftp1.Put('base1.mdb','base1.mdb',false);
   progressbar1.Position:=40;
   if checkbox2.Checked then
     ftp1.Put('base2.mdb','base2.mdb',false);
   progressbar1.Position:=60;
   if checkbox3.Checked then
     ftp1.Put('base3.mdb','base3.mdb',false);
   progressbar1.Position:=80;
   if checkbox4.Checked then
     ftp1.Put('base4.mdb','base4.mdb',false);
   progressbar1.Position:=100;
   ftp1.Disconnect;
   timer1.Enabled:=true;
 
 end;
 
 procedure TfrmFTP.Timer1Timer(Sender: TObject);
 begin
   timer1.Enabled:=false;
   frmFTP.close;
 end;
__________________
No sabiendo que era imposible... él fue... y lo hizo!!!
En fase de construcción: LoBusco.com más .com que nunca!
Responder Con Cita
  #2  
Antiguo 22-10-2004
Avatar de taita
taita taita is offline
Miembro
 
Registrado: sep 2003
Ubicación: Murcia, San Pedro del Pinatar
Posts: 115
Poder: 21
taita Va por buen camino
Unhappy

nadie me puede echar una mano? no teneis manuales de indy aunque sea?
ya tengo los que están en la página oficial y sus ejemplos.
Ayuda please.
__________________
No sabiendo que era imposible... él fue... y lo hizo!!!
En fase de construcción: LoBusco.com más .com que nunca!
Responder Con Cita
  #3  
Antiguo 26-10-2004
Avatar de sitrico
[sitrico] sitrico is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Caracas, Venezuela
Posts: 295
Poder: 22
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
  #4  
Antiguo 26-10-2004
Avatar de taita
taita taita is offline
Miembro
 
Registrado: sep 2003
Ubicación: Murcia, San Pedro del Pinatar
Posts: 115
Poder: 21
taita Va por buen camino
Gracias sitrico por responder:
He probado a hacer lo que tú dices y si, me funciona 'casi' correctamente. Los errores que me aparecen son lo de menos, ya que por lo menos ahora hace algo aproximado a lo que deseaba.
De todas formas sigo pidiendo al resto de la gente que por favor si alguien sabe de un manual en castellano del cómo funcionan los componentes Indy, que lo digan...
Gracias de nuevo.
Saludos.
__________________
No sabiendo que era imposible... él fue... y lo hizo!!!
En fase de construcción: LoBusco.com más .com que nunca!
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


La franja horaria es GMT +2. Ahora son las 19:05:30.


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