Vielleicht so?
Benötigt:
http://stackoverflow.com/questions/2...59305#28459305
Delphi-Quellcode:
// Variablen
updateThread: TUpdateThread
HTTPFileDownload: THTTPFileDownload;
procedure IdHTTPProgressOnChange(Sender: TObject);
// Initialisierung
updateThread := nil;
// Im Buttonclick
if updateThread = nil then
updateThread := TUpdateThread.Create;
// Thread-Konstrukt
type
TUpdateThread = class(TThread)
protected
procedure Execute; override;
public
constructor Create;
destructor Destroy; override;
end;
constructor TUpdateThread.Create;
begin
inherited Create(False);
end;
destructor TUpdateThread.Destroy;
begin
inherited Destroy;
end;
procedure TUpdateThread.Execute;
begin
// Downloade Datei und und und...
Form1.HTTPFileDownload := THTTPFileDownload.Create(nil);
Form1.HTTPFileDownload.OnChange := Form1.IdHTTPProgressOnChange;
try
if Form1.HTTPFileDownload.DownloadFile(sURL, sDestinationOnDisk) then
begin
// Datei heruntergeladen
end else
begin
// Fehler behandeln
end;
finally
Form1.HTTPFileDownload.Free;
end;
// Progress
procedure TForm1.IdHTTPProgressOnChange(Sender: TObject);
var
sTmp: string;
iDownloaded: Int64;
iPercent: Integer;
begin
iPercent := THTTPFileDownload(Sender).Progress;
iDownloaded := HTTPFileDownload.BytesTransfered div 1024;
if iPercent = 100 then
Exit;
if (iPercent mod 5 = 0) then
begin
Sleep(1);
// sTmp := // string zusammenbasteln aus u.a.
// iPercent, iDownloaded
// Beispielausgabe mit entsprechenden Anpassungen im Execute-Teil, bei mehreren Dateien:
// File 6/12: Downloading (91% | 964 KB/1061 KB)
end;
end;
Deine Prozedur DeleteIECache kannst du löschen. Es gibt schon etwas Fertiges. Einfach
Winapi.WinInet.DeleteUrlCacheEntry(filename) aufrufen.