Einzelnen Beitrag anzeigen

Delphi_Atze
(Gast)

n/a Beiträge
 
#1

Fortschrittsanzeige in ProgressBar

  Alt 13. Mai 2009, 22:01
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
  Mit Zitat antworten Zitat