Ich lade folgendermaßen eine Datei per
Indy, mit Fortschrittsanzeige, runter.
Delphi-Quellcode:
procedure TForm1.IdFTP1WorkBegin(Sender: TObject; AWorkMode: TWorkMode;
const AWorkCountMax: Integer);
begin
ProgressBar1.Max := AWorkCountMax;
ProgressBar1.Position := 0;
end;
procedure TForm1.IdFTP1Work(Sender: TObject; AWorkMode: TWorkMode;
const AWorkCount: Integer);
Var
S: String;
TotalTime: TDateTime;
H, M, Sec, MS: Word;
DLTime: Double;
begin
//Errechnen der Transfergeschwindigkeit:
TotalTime := Now - STime;
DecodeTime(TotalTime, H, M, Sec, MS);
Sec := Sec + M * 60 + H * 3600;
DLTime := Sec + MS / 1000;
if DLTime > 0 then
AverageSpeed := (AWorkCount / 1024) / DLTime;
S := FormatFloat('0.00 KB/s', AverageSpeed);
case AWorkMode of
wmRead: StatusBar1.Panels[1].Text := 'Download speed ' + S;
wmWrite: StatusBar1.Panels[1].Text := 'Uploade speed ' + S;
end;
//Aktualisieren der Fortschrittsanzeige:
ProgressBar1.Position := AWorkCount;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
IdFTP1.Connect(true);
IdFTP1.Get('Test.rar', 'C:\Test.rar', true);
IdFTP1.Quit;
end;
Doch leider hängt sich das Programm solange auf, bis ich die Datei runtergeladen habe.
Also bringt die Anzeige gar nichts, deswegen wollte ich fragen, wie man diesen Fehler beheben könnte.
Hat villeicht schon jemand das selbe Porblem gehabt und kann mir helfen?
Danke UC
[Edit]Kleinere Fehler beseitigt[/Edit]