Delphi ActiveX
Delphi ActiveX
HTTP Download with Progress Event Callbacks
See more HTTP Examples
Downloads a file via HTTP or HTTPS and uses event callbacks to monitor progress.Chilkat Delphi ActiveX Downloads
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Chilkat_TLB;
...
procedure TForm1.httpAbortCheck(ASender: TObject; out abort: Integer);
begin
// TThread.Synchronize provides safety for callbacks that occur in a background thread..
TThread.Synchronize(nil, procedure begin
end);
end;
procedure TForm1.httpPercentDone(ASender: TObject; percentDone: Integer; out abort: Integer);
begin
// TThread.Synchronize provides safety for callbacks that occur in a background thread..
TThread.Synchronize(nil, procedure begin
Memo1.Lines.Add('Percent Done: ' + IntToStr(percentDone));
// Explicitly abort at 25% or greater.
// Remove this to allow for the HTTP download to run to completion.
if (percentDone > 25) then
begin
abort := 1;
end;
end);
end;
procedure TForm1.httpProgressInfo(ASender: TObject; const name: WideString; const value: WideString);
begin
// TThread.Synchronize provides safety for callbacks that occur in a background thread..
TThread.Synchronize(nil, procedure begin
Memo1.Lines.Add(name + ': ' + value);
end);
end;
procedure TForm1.Button1Click(Sender: TObject);
var
success: Integer;
http: TChilkatHttp;
localFilePath: WideString;
begin
success := 0;
// This example assumes the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
http := TChilkatHttp.Create(Self);
http.OnAbortCheck := httpAbortCheck;
http.OnPercentDone := httpPercentDone;
http.OnProgressInfo := httpProgressInfo;
// Set a heartbeat in milliseconds
http.HeartbeatMs := 200;
// Download a file...
localFilePath := 'qa_output/Python-3.4.4.tar.xz';
success := http.Download('https://www.python.org/ftp/python/3.4.4/Python-3.4.4.tar.xz',localFilePath);
if (success = 0) then
begin
Memo1.Lines.Add(http.LastErrorText);
Exit;
end;
Memo1.Lines.Add('OK!');
end;