![]() |
![]() |
![]() |
![]() |
![]() |
FTP | ![]() |
![]() |
CCD | ![]() |
![]() |
Buscar | ![]() |
![]() |
Trucos | ![]() |
![]() |
Trabajo | ![]() |
![]() |
Foros | ![]() |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
![]() Hola!
Entre mis proyectos tengo un editor que me permite escribir programas en ensamblador. Actualmente voy en la versión 3 (aunke más bien es 2.5, pero ya diseñe el entorno con el numero y presentaciones con el #3 ![]() ![]() ![]() ![]() He aki el unit que tengo para poder descargar un archivo de internet. Código:
... ... ... implementation uses InfoDownForm; {$R *.dfm} procedure TForm1.FormShow(Sender: TObject); begin FormInfoDown.ShowModal; if FileExists(ExtractFileDir(Application.Exename)+'\infoupdates.txt') then begin Memo1.Lines.LoadFromFile(ExtractFileDir(Application.Exename)+'\infoupdates.txt'); Label3.Caption:=Memo1.Lines[7] //Aki esta el tamaño del archivo que se descargara, //para compararlo con el tamaño del que se esta bajando. end else begin Memo1.Lines[0]:='No existe ninguna información sobre alguna actualización.'; BitBtn1.Enabled:=False; CheckBox1.Enabled:=False; end end; procedure TForm1.BitBtn1Click(Sender: TObject); begin Timer1.Enabled:=True; UrlDownloadToFile(nil, 'http://www.sitio.com/archivo.zip', PChar(ExtractFileDir(Application.ExeName)+'\archivo.zip'), 0, nil); end; procedure TForm1.Timer1Timer(Sender: TObject); var f: file of Byte; size: Longint; begin if fileexists(ExtractFileDir(Application.ExeName)+'\archivo.zip') then begin AssignFile(f, ExtractFileDir(Application.ExeName)+'\archivo.zip'); Reset(f); try size := FileSize(f); Label4.Caption:=IntToStr(Size); //Muestra los bytes bajados del archivo finally CloseFile(f); end; end; end; end. Mi problema es que mientras descargo intento mostrar el avance de la descarga, pero mi Form no se actualiza hasta que la misma descarga ha finalizado. Intento hacerlo tambien con: Código:
procedure TForm1.BitBtn1Click(Sender: TObject); var stream: TFilestream; begin //Timer1.Enabled:=True; stream:= TFileStream.Create(ExtractFileDir(Application.ExeName)+'\bnotas.zip',fmCreate); try IdHTTP1.Get('http://www.geocities.com/frogsoftx/updates/bnotas.zip',stream); finally stream.Free; end; //UrlDownloadToFile(nil, 'http://www.geocities.com/frogsoftx/updates/bnotas.zip', PChar(ExtractFileDir(Application.ExeName)+'\bnotas.zip'), 0, nil); end; ¿Que alternativa existe para que yo pueda lograr mi objetivo? Me imagino que tendría que meterme a descargar byte por byte 'manualmente' y así poder llevar la cuenta, pero no se como.
__________________
Guía de Estilo. Última edición por madman fecha: 29-06-2003 a las 00:33:56. |
#2
|
||||
|
||||
Lo que pasa es que parece que el componente no realiza conexiones asincronas, asi que espera que se descargue el archivo para continuar con el programa. Mira a ver si esto te sirve:
http://beta.experts-exchange.com/Pro..._20349921.html Sino, pues puedes utilizar otros metodos de descarga. Si no sales a flote con ese ejemplo, dejanos saber para evaluar otras opciones ![]()
__________________
Héctor Geraldino Software Engineer |
#3
|
||||
|
||||
Gracias hector!
Probare el contenido del link lo antes posible, y dare mis observaciones al respecto.
__________________
Guía de Estilo. |
#4
|
||||
|
||||
Funciona perfectamente!
Con modificaciones se logra lo que uno quiere. Gracias hector!
__________________
Guía de Estilo. |
![]() |
|
|
![]() |
|