![]() |
Indy FTP mit Progressbar
Hallo,
ich bin schier am verzweifeln. Ich lade mir eine Datei mit dem Indy FTP (TIdFTP) herunter und möchte dies in einer Progressbar anzeigen. Im Debug Modus zeigt mir das auch an, aber im Release Modus zeigt mir die Progressbar nichts an. Hier mal mein Code:
Delphi-Quellcode:
Es gibt hier viele Einträge aus dem letzten Jahrzehnt aber leider keine Lösung.
ProgressBar.Visible := True;
ProgressBar.Max := UpdaterFtp.Size('Natuprax.zip'); ProgressBar.Position := 0; ProgressBar.Steps := 1; ProgressBar.Min := 0; PageControl.ActivePage := DownloadTab; NeuStartenBtn.Enabled := False; AbbrechenBtn.Enabled := False; Refresh; if not UpdaterFtp.Connected then UpdaterFtp.Connect; UpdaterFtp.Get('Natuprax.zip', extractFilePath(Application.ExeName) + 'NatupraxNeu.zip', true, false); procedure TUpdaterFrm.UpdaterFtpWork(ASender: TObject; AWorkMode: TWorkMode; AWorkCount: Int64); begin ProgressBar.Position := AWorkCount; Application.ProcessMessages; end; procedure TUpdaterFrm.UpdaterFtpWorkBegin(ASender: TObject; AWorkMode: TWorkMode; AWorkCountMax: Int64); begin progressbar.max := AWorkCountMax; end; procedure TUpdaterFrm.UpdaterFtpWorkEnd(ASender: TObject; AWorkMode: TWorkMode); begin progressbar.Position := 0; end; Ich benutze Delphi 10.1 Berlin Hat jemand eine Idee woran das liegt. |
AW: Indy FTP mit Progressbar
Zitat:
versuche es mal so.
Delphi-Quellcode:
Die Progressbar wird nur dann aktualisiert wenn nötig.
Progress := AWorkCount;
if (ProgressBar.Position <> Progress) then ProgressBar.Position := Progress; das schont die Ressourcen und beschleunigt das zeichnen der Progressbar selbst. gruss |
AW: Indy FTP mit Progressbar
Hallo, nein daran liegt es nicht. Ich habe mal den Code geändert und festgestellt das, das UpdaterFtpWork gar nicht richtig ausgeführt wird.
Der Wert in Progress bleibt immer gleich.
Delphi-Quellcode:
procedure TUpdaterFrm.UpdaterFtpWork(ASender: TObject; AWorkMode: TWorkMode;
AWorkCount: Int64); var Progress : Integer; begin Progress := AWorkCount; if ProgressBar.Position <> Progress then begin ProgressBar.Position := Progress; showMessage(IntToStr(Progress)); end; Application.ProcessMessages; end; |
AW: Indy FTP mit Progressbar
Bevor man das hier weiter ausführt eine Frage:
ist das Programm nur für dich oder auch für andere bestimmt? |
AW: Indy FTP mit Progressbar
Es ist mein Programm. Warum willst Du das wissen.
|
AW: Indy FTP mit Progressbar
Weil wenn man das für andere freigibt würde ich niemals FTP nehmen.
Auch so empfehle ich dir per HTTP herunterzuladen und dich von FTP zu verabschieden. Hier ist alles erklärt: ![]() |
AW: Indy FTP mit Progressbar
Zitat:
Diese sollte man nicht unterbrechen und nur aktualisieren wenn nötig. Zitat:
Das war aber auch nicht die frage. gruss |
AW: Indy FTP mit Progressbar
Zitat:
Alles was man per FTP runterladen kann, kann man auch über HTTP runterladen. Eine korrekt funktionierende Lösung habe ich oben bereits erwähnt. Zitat:
Als Tod würde ich es nicht betrachten. Denn das ist es keinesfalls. |
AW: Indy FTP mit Progressbar
Zitat:
|
AW: Indy FTP mit Progressbar
Zitat:
die anzeige der Progessbar dann noch ist? Bzw.. diese aktualisiert. Hast du mal eine Progressbar unter Volllast einer Anwendung getestet? Ich meine so was hier. Glaubst du im ernst das die Progressbar jemals ihren Status ändert? Wenn du da noch mit ProcessMessages rum machst? Denke nicht! Wenn ich schon eine Progressbar in meine Anwendung integriere dann sollte ich diese nicht durch ProcessMessages blockieren. Zitat:
gruss |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:51 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