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 29-06-2003
Avatar de madman
madman madman is offline
Miembro
 
Registrado: may 2003
Ubicación: Nayarit, México
Posts: 242
Poder: 22
madman Va por buen camino
Lightbulb Descargando archivos de actualizaciones de mi aplicación

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.
Como podrán ver si descarga el archivo, todo funcionaría de maravilla, excepto... que al darle URLDownloadToFile, se para mi aplicación (aunke si esta descargando el archivo).

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;
Pero tambien se congela.

¿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.
Responder Con Cita
  #2  
Antiguo 29-06-2003
Avatar de __hector
[__hector] __hector is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Santo Domingo, Rep. Dom.
Posts: 1.075
Poder: 23
__hector Va por buen camino
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
Responder Con Cita
  #3  
Antiguo 30-06-2003
Avatar de madman
madman madman is offline
Miembro
 
Registrado: may 2003
Ubicación: Nayarit, México
Posts: 242
Poder: 22
madman Va por buen camino
Gracias hector!

Probare el contenido del link lo antes posible, y dare mis observaciones al respecto.
__________________
Guía de Estilo.
Responder Con Cita
  #4  
Antiguo 30-06-2003
Avatar de madman
madman madman is offline
Miembro
 
Registrado: may 2003
Ubicación: Nayarit, México
Posts: 242
Poder: 22
madman Va por buen camino
Funciona perfectamente!

Con modificaciones se logra lo que uno quiere.

Gracias hector!
__________________
Guía de Estilo.
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 21:34:56.


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