Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 12-03-2012
petete2008 petete2008 is offline
Miembro
 
Registrado: oct 2008
Posts: 109
Poder: 16
petete2008 Va por buen camino
poner un progressbar a URLDownloadToCacheFile

Hola :
Necesito poner un progressbar para ver el proceso de descarga en la llamada a la siguiente función.
¿Alguien sabe como agregar el componente 'barra de progreso'?
Gracias.

Código:
function DownloadToFile(URL, FileName: String): Boolean;
var  lpszFile: Array [0..MAX_PATH] of Char;
begin
  // Download to cache by getting newest version
  if (URLDownloadToCacheFile(nil, PChar(URL), @lpszFile, MAX_PATH, BINDF_GETNEWESTVERSION, nil) = S_OK) then
     // Copy to desired file name
     result:=CopyFile(@lpszFile, PChar(FileName), False)
  else
     // Failed
     result:=False;
end;
Responder Con Cita
  #2  
Antiguo 12-03-2012
Avatar de ElDioni
[ElDioni] ElDioni is offline
Miembro Premium
 
Registrado: jul 2005
Ubicación: Murcia (España)
Posts: 935
Poder: 19
ElDioni Va por buen camino
No he leido el hilo con los enlaces que lleva pero echale un vistazo que puede que te sirva de ayuda.

http://www.clubdelphi.com/foros/show...ht=progressbar

Saludos.
__________________
Confórmate con lo que tienes pero anhela lo que te falta.
Responder Con Cita
  #3  
Antiguo 12-03-2012
petete2008 petete2008 is offline
Miembro
 
Registrado: oct 2008
Posts: 109
Poder: 16
petete2008 Va por buen camino
No me sirven porque en todo ellos siempre me descarga el mismo aunque yo modifique por ftp el fichero de la web.
Es como si me cogiera el de la cache del ordenador en lugar de FORZAR la "bajada" del fichero de nuevo.
De ahí que lo único que me ha funcionado es el código que he puesto.
Responder Con Cita
  #4  
Antiguo 13-02-2013
petete2008 petete2008 is offline
Miembro
 
Registrado: oct 2008
Posts: 109
Poder: 16
petete2008 Va por buen camino
Raro.....

Tengo el mismo código que tú y me acabo de dar cuenta de una cosa.

Supongamos que de donde quiero decargar tenemos dos ficheros. Por ejemplo :
http://www.rutas.com/fichero.sql y http://www.rutas.com/fichero.sql.gz

Pues bien...
Cuando le digo que descargue el http://www.rutas.com/fichero.sql me descarga el que termina en .gz
Y esto pasa siempre que tenga para el mismo nombre otro fichero con extensión .gz al final.

¿Alguien sabe la solución?
Yo quiero descargar el fichero con extensión .sql

Gracias
Responder Con Cita
  #5  
Antiguo 13-02-2013
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.042
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por petete2008 Ver Mensaje
Tengo el mismo código que tú y me acabo de dar cuenta de una cosa.
El mismo código que tú mismo
Responder Con Cita
  #6  
Antiguo 13-02-2013
petete2008 petete2008 is offline
Miembro
 
Registrado: oct 2008
Posts: 109
Poder: 16
petete2008 Va por buen camino
Era un problema del .htaccess que tenía redirecciones a gz en el caso que existiese.
Tema solucionado
Responder Con Cita
  #7  
Antiguo 14-02-2013
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 21
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
petete2008,

Cita:
Empezado por petete2008
Necesito poner un progressbar para ver el proceso de descarga en la llamada a la siguiente función...
Revisa este código:
Código Delphi [-]
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, WinINet, ComCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    ProgressBar1: TProgressBar;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

function DownLoadFile( URL, FileName: String ): boolean;
var
   hInternetSession, hURL: HInternet;
   Buffer: array[1..1024] of Byte;
   ReadBuffer : Cardinal;
   F: File;
   FileSize : Cardinal;
   BufLen: DWORD;
   Index: DWORD;

begin

   try

      // Inicialización de las Funciones WinINet.
      hInternetSession := InternetOpen(PChar(ExtractFileName(Application.ExeName)), INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0 );
      if not Assigned(hInternetSession) then
      begin
         MessageDlg('Error de Apertura de Session de Internet',mtConfirmation,[mbOK],0);
         Result := False;
         Exit;
      end;

      Index := 0;
      ReadBuffer := 0;
      BufLen := Sizeof(FileSize);

      // Abre un recurso para FTP o HTTP Download.
      hURL := InternetOpenURL(hInternetSession, PChar(URL), nil, 0, 0, 0 );
      if not Assigned(hURL) then
      begin
         MessageDlg('Error de Apertura de URL',mtConfirmation,[mbOK],0);
         Result := False;
         Exit;
      end;

      // Obtiene informacion asociada al Http Request (Tamaño del archivo a download)
      HttpQueryInfo(hURL,HTTP_QUERY_CONTENT_LENGTH or HTTP_QUERY_FLAG_NUMBER, @FileSize,BufLen,Index);

      Form1.ProgressBar1.Max := FileSize;
      Form1.ProgressBar1.Position := 0;

      try

         AssignFile(F, FileName);
         Rewrite(F, 1);

         repeat

            Application.ProcessMessages;

            // Lee data del handle asociado a la funcion InternetOpenUrl para Download del archivo
            InternetReadFile(hURL, @Buffer, SizeOf(Buffer), ReadBuffer);

            // Escribe el archivo en Internet a disco.
            BlockWrite(F, Buffer, ReadBuffer);

            Form1.ProgressBar1.Position := Form1.ProgressBar1.Position + ReadBuffer;

         until ReadBuffer = 0;

         CloseFile(F);
         Result := True;

      except
         MessageDlg('Error de I/O en Archivo para Download',mtConfirmation,[mbOK],0);
         Result := False;
         InternetCloseHandle(hURL);
         InternetCloseHandle(hInternetSession);
         Exit;
      end

   except
      MessageDlg('Error de Apertura Internet-Session para Download',mtConfirmation,[mbOK],0);
      Result := False;
      InternetCloseHandle(hURL);
      InternetCloseHandle(hInternetSession);
      Exit;
   end;

   // Cierra el handle de Internet
   InternetCloseHandle(hURL);
   InternetCloseHandle(hInternetSession);

   MessageDlg('El Proceso de Download fue Realizado Satisfactoriamente',mtConfirmation,[mbOK],0);

   Result := True;

end;

procedure TForm1.Button1Click(Sender: TObject);
var
   Url : string;
   FileName : string;

begin

   // Ejemplo de Download de archivo en el Club Delphi
   Url := 'http://terawiki.clubdelphi.com/Delphi/Manuales/?download=La_Cara_Oculta_De_Delphi_4_pdf_.zip';
   FileName := 'C:\La_Cara_Oculta_De_Delphi_4_pdf_.zip';

   DownLoadFile(Url,FileName);

end;

end.
El código anterior permite descargar un archivo en Internet por medio de las funciones de WinINet (Windows Internet) y muestra el progreso de la descarga en un control TProgressBar. Quizás esta solución se pueda adaptar a tu proyecto.

Nota: El servidor FTP o HTTP debe estar configurado para permitir descargas directas.

Espero sea útil

Nelson.

Última edición por nlsgarcia fecha: 14-02-2013 a las 02:00:48.
Responder Con Cita
  #8  
Antiguo 14-02-2013
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 21
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
petete2008,

El código fuente del Msg #7 con algunas modificaciones menores esta disponible en el link: http://terawiki.clubdelphi.com/Delph...on+WinINet.rar

Espero sea útil

Nelson.
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
ProgressBar en StatusBar ioco Gráficos 3 19-04-2010 14:27:42
progressbar 11_8_88 C++ Builder 2 04-11-2008 19:46:33
ProgressBar chinchan C++ Builder 6 16-10-2008 15:15:00
Progressbar Paulao Varios 6 28-05-2008 20:49:41
Progressbar mminorm Varios 1 29-05-2005 07:19:21


La franja horaria es GMT +2. Ahora son las 12:03:48.


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