Meine originalen Daten bezügl. Downloadpfad habe ich durch "Downloadpfad" ersetzt.
Delphi-Quellcode:
procedure TForm1.Timer4Timer(Sender: TObject);
var
BytesKopiert, BytesInsgesamt : int64;
lStream: TFileStream;
begin
label6.Visible:=true;
form1.Height:=250;
Status.Caption:='Initialisieren';
//Initialisieren
Status.Caption := '';
BytesKopiert := 0;
Progress.Position := 0;
Status.Caption := 'Prüfe Header';
// Durch die zwei nächsten Befehle wird die Größe ermittelt und ihn der Variable BytesInsgesamt abgespeichert
Status.Caption:='Dateigröße ermitteln';
IdHTTP.Head(Downloadpfad);
BytesInsgesamt := IdHTTP.Response.ContentLength;
Progress.Max := BytesInsgesamt;
Status.Caption := 'Erstelle Datei';
//Datei erstellen
lStream:=TFileStream.Create(GetApplicationDirectory + 'Datei.exe', fmCreate or fmShareDenyNone);
lStream.Position := 0;
try
repeat
Application.ProcessMessages;
IdHTTP.Request.ContentRangeStart := BytesKopiert;
if (BytesInsgesamt-BytesKopiert) > cFileSplitSize then
IdHTTP.Request.ContentRangeEnd := BytesKopiert+cFileSplitSize-1;
end
else IdHTTP.Request.ContentRangeEnd := BytesInsgesamt;
Application.ProcessMessages;
//Den eingesttelten Teil herunterladen und ihn die Datei speichern
IdHTTP.Get(Downloadpfad, lStream);
Progress.Position := BytesKopiert;
Status.Caption := GetSizeName(BytesKopiert)+'/'+GetSizeName(BytesInsgesamt);
BytesKopiert := BytesKopiert+cFileSplitSize;
until (BytesKopiert >= BytesInsgesamt); //Schleife beenden wenn datei fertig
finally
if Assigned(lStream) then lStream.Free; //FileStream freigeben wenn gesetzt
end;
Status.Caption := 'Fertig';
SpeedLabel.caption := 'Fertig';
Progress.Position := 100;
timer4.enabled:=false;
end;
Dies ist der Teil bei dem meiner Meinung nach der Fehler liegt. Der Rest kann man in dem Tutorial von oben sehen...