AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Indy FTP mit Progressbar
Thema durchsuchen
Ansicht
Themen-Optionen

Indy FTP mit Progressbar

Ein Thema von Walter Landwehr · begonnen am 26. Okt 2017 · letzter Beitrag vom 15. Okt 2019
Antwort Antwort
Walter Landwehr

Registriert seit: 28. Mär 2006
Ort: 32816 Schieder-Schwalenberg
405 Beiträge
 
Delphi 10.4 Sydney
 
#1

Indy FTP mit Progressbar

  Alt 26. Okt 2017, 15:06
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:
   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;
Es gibt hier viele Einträge aus dem letzten Jahrzehnt aber leider keine Lösung.

Ich benutze Delphi 10.1 Berlin

Hat jemand eine Idee woran das liegt.
Walter Landwehr
Mfg

Walter
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#2

AW: Indy FTP mit Progressbar

  Alt 26. Okt 2017, 15:16
Zitat:
ProgressBar.Position := AWorkCount;
Application.ProcessMessages;
Sorry.. Das ist sehr schlecht und bremst die Progressbar nur aus.
versuche es mal so.

Delphi-Quellcode:
Progress := AWorkCount;

if (ProgressBar.Position <> Progress) then
  ProgressBar.Position := Progress;
Die Progressbar wird nur dann aktualisiert wenn nötig.
das schont die Ressourcen und beschleunigt das zeichnen der Progressbar selbst.

gruss
  Mit Zitat antworten Zitat
Walter Landwehr

Registriert seit: 28. Mär 2006
Ort: 32816 Schieder-Schwalenberg
405 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Indy FTP mit Progressbar

  Alt 26. Okt 2017, 15:34
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;
Walter Landwehr
Mfg

Walter
  Mit Zitat antworten Zitat
Glados
(Gast)

n/a Beiträge
 
#4

AW: Indy FTP mit Progressbar

  Alt 26. Okt 2017, 15:35
Bevor man das hier weiter ausführt eine Frage:
ist das Programm nur für dich oder auch für andere bestimmt?
  Mit Zitat antworten Zitat
Walter Landwehr

Registriert seit: 28. Mär 2006
Ort: 32816 Schieder-Schwalenberg
405 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: Indy FTP mit Progressbar

  Alt 26. Okt 2017, 15:37
Es ist mein Programm. Warum willst Du das wissen.
Walter Landwehr
Mfg

Walter
  Mit Zitat antworten Zitat
Glados
(Gast)

n/a Beiträge
 
#6

AW: Indy FTP mit Progressbar

  Alt 26. Okt 2017, 15:38
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: https://stackoverflow.com/questions/...59305#28459305
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#7

AW: Indy FTP mit Progressbar

  Alt 26. Okt 2017, 15:41
Zitat:
Der Wert in Progress bleibt immer gleich.
Ok! Aber destotrotz ein Application.ProcessMessages; ist der Tod für deine Progressbar
Diese sollte man nicht unterbrechen und nur aktualisieren wenn nötig.

Zitat:
und dich von FTP zu verabschieden.
Warum sollte er das tun wenn er einen FTP Server hat?
Das war aber auch nicht die frage.

gruss

Geändert von EWeiss (26. Okt 2017 um 15:44 Uhr)
  Mit Zitat antworten Zitat
Glados
(Gast)

n/a Beiträge
 
#8

AW: Indy FTP mit Progressbar

  Alt 26. Okt 2017, 15:57
Zitat:
Warum sollte er das tun
Weil es einfach unsicher ist irgendwelche Logindaten in eine Datei mit einzukompilieren.
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:
Ok! Aber destotrotz ein Application.ProcessMessages; ist der Tod für deine Progressbar
Diese sollte man nicht unterbrechen und nur aktualisieren wenn nötig.
Das verstehe ich irgendwie nicht. Warum sollte das der Tod sein? Wir wissen ja nicht einmal, ob er einen Thread benutzt oder nicht.
Als Tod würde ich es nicht betrachten. Denn das ist es keinesfalls.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:02 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