Thema: Delphi Dateidownload

Einzelnen Beitrag anzeigen

SneakyBagels
(Gast)

n/a Beiträge
 
#9

AW: Dateidownload

  Alt 21. Mai 2017, 12:57
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.

Geändert von SneakyBagels (21. Mai 2017 um 13:06 Uhr)
  Mit Zitat antworten Zitat