Ohne jetzt vor Delphi zu sitzen... beim Kochen und ohne zu testen *gg* aber als Ansatz gedacht... du kannst auch die Statusanzeige in diesem Fall gleicht direkt in die repeat Schleife einbauen...
Delphi-Quellcode:
fTime := GetTickCount;
repeat
// Damit sich das Programm nicht aufhängt
Application.ProcessMessages;
//Hier wird gebrüft ob die restlichen Bytes größer sind als cFileSplitSize
if (BytesInsgesamt-BytesKopiert) > cFileSplitSize then
begin
//Hier wird einmal die cFileSplitSize eingestellt
HTTPAutoUpdate.Request.Range := Format('%d-%d', [BytesKopiert, (BytesKopiert+cFileSplitSize-1)]);
end
else HTTPAutoUpdate.Request.Range := Format('%d-', [BytesKopiert]);
Application.ProcessMessages;
//Den eingesttelten Teil herunterladen und ihn die Datei speichern
HTTPAutoUpdate.Get(RemotePath+fileName, lStream);
//Progress und Status aktualliesieren
AutoUpdateProgress.Position := BytesKopiert;
AutoUpdateStatus.Caption := GetSizeName(BytesKopiert)+'/'+GetSizeName(BytesInsgesamt);
//BytesKopiert weiter setzen
BytesKopiert := BytesKopiert+cFileSplitSize;
// jetzt Status aktualisieren
if (GetTickCount - FTime) > 0) then begin
SpeedStatus.caption := Format('%.2f KB/s', [BytesKopiert / (GetTickCount - FTime)]);
FTime := GetTickCount;
end;
until (BytesKopiert >= BytesInsgesamt); //Schleife beenden wenn datei fertig