![]() |
Fortschrittsanzeige bei FTP-download
Hi,
es gibt von Luckie so ein schönes Beispiel, wo beim FTP-upload der Status und der Uploadfortschritt angezeigt wird: Die Fortschrittsanzeige der Progressbar wird durch Properties von IdFTP realisiert und zwar mit folgenden Methoden:
Delphi-Quellcode:
Meines Erachtens müsste das Ganze doch beim Download ebenso funzen, tut es aber nicht, die Fortschrittsanzeige bewegt sich nicht.
procedure TFormFTPTransfer.IdFTPWork(Sender: TObject; AWorkMode: TWorkMode;
const AWorkCount: Integer); begin ProgressBar.Position := AWorkCount; Application.ProcessMessages; end; procedure TFormFTPTransfer.IdFTPWorkEnd(Sender: TObject; AWorkMode: TWorkMode); begin ProgressBar.Position := 0; end; procedure TFormFTPTransfer.IdFTPWorkBegin(Sender: TObject; AWorkMode: TWorkMode; const AWorkCountMax: Integer); begin ProgressBar.Max :=AWorkCountMax; end; Die Frage ist jetzt, warum wohl nicht... Gruß Wolle |
Re: Fortschrittsanzeige bei FTP-download
Ich sehe nirgends in dem Quellcode wie weit der Fortschrittsbalken gehen soll. Vielleicht liegts ja daran.
|
Re: Fortschrittsanzeige bei FTP-download
Zitat:
Delphi-Quellcode:
Und da scheint der Hund auch begraben zu sein, der Wert wird nämlich im OnWorkBegin-Ereigniss nicht ermittelt, steht somit auf Null. Beim Upload wird der Wert im Gegensatz dazu richtig ermittelt...
procedure TFormFTPTransfer.IdFTPWorkBegin(Sender: TObject;
AWorkMode: TWorkMode; const AWorkCountMax: Integer); begin ProgressBar.Max :=AWorkCountMax; end; |
Re: Fortschrittsanzeige bei FTP-download
So, es liegt, wie gesagt an AWorkCountMax, wo bei einem FTP-download immer der Wert Null drin steht. Die Progressbar kann somit nichts anzeigen.
ersetzt man in
Delphi-Quellcode:
procedure TFormFTPTransfer.IdFTPWorkBegin(Sender: TObject;
AWorkMode: TWorkMode; const AWorkCountMax: Integer); begin ProgressBar.Max :=AWorkCountMax; end;
Delphi-Quellcode:
durch
ProgressBar.Max :=AWorkCountMax;
Delphi-Quellcode:
wobei BytesToTransfer vom Typ LongWord ist und nach dem Connect mit
if AWorkCountMax > 0 then ProgressBar.Max := AWorkCountMax
else ProgressBar.Max := BytesToTransfer;
Delphi-Quellcode:
ermittelt wird, funzt die Progressbar auch beim FTP-Download...
BytesToTransfer:= IdFTP.Size(Datei);
|
Re: Fortschrittsanzeige bei FTP-download
Zitat:
![]() die Lösung scheint zu sein, vor dem Download die Methode Size aufzurufen:
Delphi-Quellcode:
progress1.Max := IdFTP1.Size(dateiname);
IdFTP1.Get(dateiname, localfilename); |
Re: Fortschrittsanzeige bei FTP-download
Ooops, da war einer schneller...wobei das alleinige Aufrufen vorm Download wohl nicht reicht bzw. vielleicht doch besser in OnWorkBegin gesetzt wird...
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:20 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz