Einzelnen Beitrag anzeigen

Stresslein

Registriert seit: 20. Feb 2005
44 Beiträge
 
#3

Re: Problem mit Fortschrittsanzeige idHTTP

  Alt 1. Sep 2005, 20:47
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...
  Mit Zitat antworten Zitat