AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Indy FTP mit Progressbar

Indy FTP mit Progressbar

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

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

Indy FTP mit Progressbar

  Alt 26. Okt 2017, 16: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, 16: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
379 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Indy FTP mit Progressbar

  Alt 26. Okt 2017, 16: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, 16: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
379 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: Indy FTP mit Progressbar

  Alt 26. Okt 2017, 16: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, 16: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, 16: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 16:44 Uhr)
  Mit Zitat antworten Zitat
Glados
(Gast)

n/a Beiträge
 
#8

AW: Indy FTP mit Progressbar

  Alt 26. Okt 2017, 16: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
Daniel
(Co-Admin)

Registriert seit: 30. Mai 2002
Ort: Hamburg
13.919 Beiträge
 
Delphi 10.4 Sydney
 
#9

AW: Indy FTP mit Progressbar

  Alt 26. Okt 2017, 17:17
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.
Du hast eine Lösung verlinkt, aber die macht etwas anderes. Um die Frage der Logindaten hast Du Dich komplett gedrückt. Der von Dir verlinkte Code lädt eine Datei via HTTPS herunter, nicht mehr und nicht weniger. Es ist grundsätzlich richtig, den Transportweg zu sichern. Aber den von Dir vorgebrachten Einwand mit den einkompilierten Logindaten hast Du selbst auch nicht behandelt.
Daniel R. Wolf
mit Grüßen aus Hamburg
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#10

AW: Indy FTP mit Progressbar

  Alt 26. Okt 2017, 17:23
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.
Wenn du anstelle des zeichnen der Progressbar die Anwendung weiterhin ihr spielchen treiben lässt was glaubst wie genau
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:
Wir wissen ja nicht einmal, ob er einen Thread benutzt oder nicht.
Das hat nichts mit einem Thread zu tun.

gruss

Geändert von EWeiss (11. Jul 2019 um 16:48 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 01:20 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz