Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Fortschrittsanzeige bei FTP-download (https://www.delphipraxis.net/41724-fortschrittsanzeige-bei-ftp-download.html)

Gambit 7. Mär 2005 16:58


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:
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;
Meines Erachtens müsste das Ganze doch beim Download ebenso funzen, tut es aber nicht, die Fortschrittsanzeige bewegt sich nicht.
Die Frage ist jetzt, warum wohl nicht...

Gruß

Wolle

Unrealer 7. Mär 2005 17:17

Re: Fortschrittsanzeige bei FTP-download
 
Ich sehe nirgends in dem Quellcode wie weit der Fortschrittsbalken gehen soll. Vielleicht liegts ja daran.

Gambit 7. Mär 2005 17:41

Re: Fortschrittsanzeige bei FTP-download
 
Zitat:

Zitat von Unrealer
Ich sehe nirgends in dem Quellcode wie weit der Fortschrittsbalken gehen soll. Vielleicht liegts ja daran.

Ne? Das steht in der letzten Methode:

Delphi-Quellcode:
procedure TFormFTPTransfer.IdFTPWorkBegin(Sender: TObject;
  AWorkMode: TWorkMode; const AWorkCountMax: Integer);
begin
  ProgressBar.Max :=AWorkCountMax;
end;
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...

Gambit 7. Mär 2005 18:26

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:
ProgressBar.Max :=AWorkCountMax;
durch

Delphi-Quellcode:
if AWorkCountMax > 0 then ProgressBar.Max := AWorkCountMax
    else ProgressBar.Max := BytesToTransfer;
wobei BytesToTransfer vom Typ LongWord ist und nach dem Connect mit

Delphi-Quellcode:
BytesToTransfer:= IdFTP.Size(Datei);
ermittelt wird, funzt die Progressbar auch beim FTP-Download...

shmia 7. Mär 2005 18:26

Re: Fortschrittsanzeige bei FTP-download
 
Zitat:

Zitat von Gambit
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...

Ja und das Problem mit Indy taucht in diesem Forum immer wieder auf:
Hier im Forum suchenAWorkCountMax
die Lösung scheint zu sein, vor dem Download die Methode Size aufzurufen:
Delphi-Quellcode:
  progress1.Max := IdFTP1.Size(dateiname);
  IdFTP1.Get(dateiname, localfilename);

Gambit 7. Mär 2005 18:26

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