Fórum Download em Delphi #221275

21/03/2004

0

Como posso fazer download de um arquivo?
É possível mostrar informações como Total do Arquivo, Total Copiado e Tempo Restante?


Fmd

Fmd

Responder

Posts

21/03/2004

Chico Gois

Beleza!

Declare na cláusula uses: URLMon Esta função é responsável pelo download do arquivo na WEB.} function DownloadFile(Source, Dest: string): Boolean; begin try Result := UrlDownloadToFile(nil, PChar(source), PChar(Dest), 0, nil) = 0; except Result := False; end; end; //Insira no evento OnClick de um botão o seguinte código: procedure TForm1.Button1Click(Sender: TObject); begin if DownloadFile (´http://www.meusite.com.br/default.asp´, ´c:\windows\desktop\default.asp´) then ShowMessage(´Download Concluído!´) else ShowMessage(´Falha ao fazer o download!!´) end;



Responder

Gostei + 0

21/03/2004

Fmd

Mais nessa função não tem como saber quanto já foi copiado e qual é o total do arquivo...


Responder

Gostei + 0

21/03/2004

Lipsil

Kra,
ti acha aí nesse cód ;)

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, ExtCtrls, DropTarget, DropSource, DropURLTarget,
  Buttons, Gauges,httpreader,filectrl, Spin,fmxutils;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Button1: TButton;
    BitBtn1: TBitBtn;
    SpeedButton1: TSpeedButton;
    Label3: TLabel;
    Status: TLabel;
    Gauge1: TGauge;
    Label4: TLabel;
    percent: TLabel;
    Label5: TLabel;
    Copy: TLabel;
    Label7: TLabel;
    Total: TLabel;
    SpeedButton2: TSpeedButton;
    Label6: TLabel;
    Label8: TLabel;
    Timer1: TTimer;
    Label9: TLabel;
    Label10: TLabel;
    Label11: TLabel;
    Label12: TLabel;
    SpeedButton3: TSpeedButton;
    SpeedButton4: TSpeedButton;
    procedure Button1Click(Sender: TObject);
    procedure HttpProgress(Sender: TObject; const TotalSize,
      Readed: Integer; const FileName: String);
    procedure BitBtn1Click(Sender: TObject);
    procedure SpeedButton1Click(Sender: TObject);
    procedure HttpError(Sender: TObject);
    procedure HttpCopired(Sender: TObject; const FileSize: Integer;
      const FileName: String);
    procedure DropURLTarget1Drop(Sender: TObject; ShiftState: TShiftState;
      Point: TPoint; var Effect: Integer);
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure DropFileTarget1Drop(Sender: TObject; ShiftState: TShiftState;
      Point: TPoint; var Effect: Integer);
    procedure SpeedButton2Click(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure SpeedButton3Click(Sender: TObject);
    procedure SpeedButton4Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  eltime,remtime,lastcopyed,lastprocent : integer;
implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
var
dir : string;
begin
dir := ´´;
SelectDirectory(´Selecteer map´, ´´  ,dir);
if dir <> ´´ then edit2.text := dir;
end;

procedure TForm1.HttpProgress(Sender: TObject; const TotalSize,
  Readed: Integer; const FileName: String);
begin
try
status.caption := ´Copiando...´;
timer1.enabled := true;
gauge1.Maxvalue      := TotalSize;
gauge1.progress      := Readed   ;
copy.caption := inttostr(readed div 1024)+´Kb´;
total.caption := inttostr(TotalSize div 1024)+´Kb´;
percent.Caption := formatfloat(´#." ¬"´, (readed  / totalsize)*100);
application.title := percent.Caption + ´ - Download´;
except
end;
end;

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
edit1.text := ´´;
edit1.PasteFromClipboard;
end;

procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
remtime := 0;
eltime := 0;
http.URL := edit1.text;
http.LocalPath := edit2.text;
status.Caption := ´Conectando...´;
gauge1.progress := 0;
Http.Execute;
end;

procedure TForm1.HttpError(Sender: TObject);
begin
status.Caption := ´Erro!  Parado.  Lendo.´;
end;

procedure TForm1.HttpCopired(Sender: TObject; const FileSize: Integer;
  const FileName: String);
begin
status.caption := ´Pronto.´;
timer1.enabled := false;
end;

procedure TForm1.DropURLTarget1Drop(Sender: TObject;
  ShiftState: TShiftState; Point: TPoint; var Effect: Integer);
begin
edit1.text := DropURLTarget1.URL;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
DropURLTarget1.Register(edit1);
DropFileTarget1.Register(form1);
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
DropURLTarget1.Unregister;
DropFileTarget1.Unregister;
end;

procedure TForm1.DropFileTarget1Drop(Sender: TObject;
  ShiftState: TShiftState; Point: TPoint; var Effect: Integer);
begin
edit1.text := dropfiletarget1.files.strings[0];
end;

procedure TForm1.SpeedButton2Click(Sender: TObject);
begin
http.Free;
http := Thttpreader.Create(form1);
timer1.enabled := false;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
var
i,g : integer;
begin
try
label12.caption := inttostr((gauge1.progress - lastcopyed) {div 1024}) + ´ bytes´;
eltime := eltime + 1;
label8.caption := ´´;
/// minuto
if eltime div 60 < 10 then label8.caption := ´0´;
label8.caption := label8.caption + inttostr(eltime div 60) + ´:´;
/// Segundo
if eltime mod 60 < 10 then label8.caption := label8.caption + ´0´;
label8.caption := label8.caption + inttostr(eltime mod 60) ;

////
{verschil met vorige seconde}
i := gauge1.progress - lastcopyed;
{restende eenheden}
g := gauge1.MaxValue - gauge1.Progress;
g := g div i;
label10.caption := ´´;
if g div 60 < 10 then label10.caption := ´0´;
label10.caption := label10.caption + inttostr(g div 60);
if g mod 60 < 10 then label10.caption := label10.caption + ´:0´ else label10.caption := label10.caption + ´:´;
label10.caption := label10.caption + inttostr(g mod 60);
////
except
end;
lastcopyed := gauge1.progress;
end;

procedure TForm1.SpeedButton3Click(Sender: TObject);
begin
if messagedlg(´Para ?´,mtconfirmation,[mbYes,mbNo],0)  = mrYes then exit;
http.destroy;
http := Thttpreader.Create(form1);
timer1.enabled := false;
end;

copyfile(str,str1);
executefile(extractfilename(str1),´´,extractfiledir(str1),1);

end;

procedure TForm1.SpeedButton4Click(Sender: TObject);
begin
showmessage(´HTTP DOWNLOADER´+1013+´Freeware´+10131013+´Copyright 1998 - 1999´+1013+´by PadC´+1013+´louis.jansen@skynet.be´);
end;

end.



Valew


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar