Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Fortschrittsanzeige in ProgressBar (https://www.delphipraxis.net/134004-fortschrittsanzeige-progressbar.html)

Delphi_Atze 13. Mai 2009 21:01


Fortschrittsanzeige in ProgressBar
 
Hallo :)

Ich habe folgendes Problem:

Ich lade eine txt Datei mit Hilfe der Indy Komponente (in Delphi 2009) herunter. Jetzt will ich diesen Fortschritt des Herunderladens in einer ProgressBar anzeigen lassen, Ich habe eine schöne Anleitung gefunden:

-> http://www.delphi-treff.de/tutorials...t/indy/page/4/

Habe soweit alles gemacht wie beschrieben:

Varibalen (Global)

Delphi-Quellcode:
var
  Form1: TForm1;
  IdFTP1:TidFTP;
  STime:TDateTime;
  AverageSpeed:Extended;

Das ist das Ereignis der OnWork (der IdFTP1)

Delphi-Quellcode:
procedure TForm1.IdFTP1Work(ASender: TObject; AWorkMode: TWorkMode;
  AWorkCount: Int64);
var
  S: string;
  TotalTime: TDateTime;
  H, M, Sec, MS: Word;
  DLTime: Double;
begin
  //Errechnen der Transfergeschwindigkeit:
  TotalTime := Now - STime;
  DecodeTime(TotalTime, H, M, Sec, MS);
  Sec := Sec + M * 60 + H * 3600;
  DLTime := Sec + MS / 1000;
  if DLTime > 0 then
    AverageSpeed := (AWorkCount / 1024) / DLTime;
  S := FormatFloat('0.00 KB/s', AverageSpeed);
  case AWorkMode of
    wmRead: StatusBar1.Panels[1].Text := 'Download speed ' + S;
    wmWrite: StatusBar1.Panels[1].Text := 'Uploade speed ' + S;
  end;

  //Aktualisieren der Fortschrittsanzeige:
  ProgressBar1.Position := AWorkCount;
end;
Das ist die OnWorkBegin (der IdFTP1)

Delphi-Quellcode:
procedure TForm1.IdFTP1WorkBegin(ASender: TObject; AWorkMode: TWorkMode;
 AWorkCountMax: Int64);
begin
  ProgressBar1.Max := AWorkCountMax;
  ProgressBar1.Position := 0;
  STime:=now;
end;

Ich hatte Probleme das "AverageSpeed" einen Typ zuzuweisen. habe es schließlich auf Extended gesetzt (hatte ich gelesen gehabt war mir aber auch nicht sicher ob das geht). Wenn ich jetzt den Button klicke, der die txt dei runterladen soll, passiert nichts :(

der Button macht folgendes:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin

  IdFTP1:=TIdftp.Create(Self);
  IdFTP1.Username := 'XXX';
  IdFTP1.Password := 'XXX';
  IdFTP1.Port := 21;
  IdFTP1.Host := 'XXX';
  IdFTP1.Connect;
  IdFTP1.Get('marsas.txt', 'C:\WINDOWS\marsas.txt' , true, false);
  IdFTP1.Quit;

end;

Jetzt will ich den Button drücken und die ProgressBar soll halt abhängig von der Dateigröße den Fortschritt anzeigen.

Wäre über jede Hilfe sehr Dankbar :)

Luckie 13. Mai 2009 21:05

Re: Fortschrittsanzeige in ProgressBar
 
Hast du überhaupt Schreibrechte im Windowsverzeichnis, also kann die datei überhaupt erstellt werden? sind die Ereignisse der Komponente zugeordnet? Hast du den Code schon nmal debuggt? Springt er überhaupt in das Ereignis rein? Wie groß ist die Textdatei?

jfheins 13. Mai 2009 21:06

Re: Fortschrittsanzeige in ProgressBar
 
Außerdem: AWorkCountMax kann 0 sein ;)

Delphi_Atze 13. Mai 2009 21:18

Re: Fortschrittsanzeige in ProgressBar
 
-> Die datei schreibt er, das klappt alles, kann sie auch ändern
-> Über die Ereigniszuordnung habe ich mal was gelesen, weiß aber nicht wie das geht.
-> Datei ist 4,00kb groß, könnte Sie zum Testen größer machen

Luckie 13. Mai 2009 21:21

Re: Fortschrittsanzeige in ProgressBar
 
Zitat:

Zitat von Delphi_Atze
-> Über die Ereigniszuordnung habe ich mal was gelesen, weiß aber nicht wie das geht.

wie hast du denn die Ereignisse rstellt? sind sie im OI bei der Komponente eingetragen?
Zitat:

-> Datei ist 4,00kb groß, könnte Sie zum Testen größer machen
[/quote]
Wäre wohl sinnvoll.

Delphi_Atze 13. Mai 2009 21:24

Re: Fortschrittsanzeige in ProgressBar
 
Hier habe ich das erstellt:

http://www.ulodric.de/files/6211231004.jpg

Habe doppel neben das frei Feld jeweils geklickt.

Luckie 13. Mai 2009 21:40

Re: Fortschrittsanzeige in ProgressBar
 
Ja und was passiert jetzt mit größeren dateien? Hast du das Ereigniss mal debuggt?

Es ist irgendwie ziemlich kontraprdoktiv, wenn man dir alles aus der Nase ziehen muss.

Delphi_Atze 13. Mai 2009 21:49

Re: Fortschrittsanzeige in ProgressBar
 
ALso programm habe ich gestartet, aber es werden keine Fehler angezeigt.
datei ist jetzt etwas über 1mb was man jetzt schon shene müsste beim hochladen.

Delphi_Atze 13. Mai 2009 21:56

Re: Fortschrittsanzeige in ProgressBar
 
man sieht aber nichts

Luckie 13. Mai 2009 22:18

Re: Fortschrittsanzeige in ProgressBar
 
Du sollst es nicht nur einfach starten. Du sollst den Code der Ereignissprozedur debuggen! Setz da mal einen Haltepunkt und dann guck mal weiter mit F7 und guck dir die Werte der Variablen an.


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:09 Uhr.
Seite 1 von 2  1 2      

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