Einzelnen Beitrag anzeigen

Z4ppy

Registriert seit: 25. Apr 2008
269 Beiträge
 
Delphi 7 Enterprise
 
#4

AW: IdHTTP Downloadgeschwindigkeit...

  Alt 18. Aug 2010, 13:30
Ja, so ähnlich habe ich es jetzt auch gelöst, ich habe eine Variable auf false gesetzt, sie wird über einen Timer true gesetzt und wenn sie true ist, dann wird im OnWork der Code für die Anzeige ausgeführt und die Variablen werden neu gesetzt, ansonsten passiert nichts

Dein Code würde garantiert nicht gehen... Du verwendest AWorkCount im Timer, hast dieses aber nirgends gesetzt ^^

Hier mein Code:
var RunUpdate:boolean=false;
Delphi-Quellcode:
procedure TForm1.IdHTTPWork(Sender: TObject; AWorkMode: TWorkMode; const AWorkCount: Integer);
var Speed:integer; //Bytes pro sekunde
begin
  if RunUpdate then begin
    RunUpdate:=false;
    if (GetTickCount-FTime)>0 then Speed:=Round(1000*(AWorkCount-FBytes)/(GetTickCount-FTime))
    else Speed:=0;
    SpeedStatus.Caption:=GetSizeName(Speed)+'/s';
    FTime:=GetTickCount;
    FBytes:=AWorkCount;
  end;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  RunUpdate:=true;
end;
Natürlich wäre es nicht nötig, die Geschwindigkeit als Variable zu speichern, aber ich benötige sie noch ein paar mal mehr im OnWork und das hier ist nur der zentrale Code für die Geschwindigkeit. So wird diese auch schön in B/s, kB/s, MB/s usw. ausgegeben ^^

MfG Z4ppy

PS.: Wieso machst du das Format eigentlich in einem try-except-Block? Wenn GetTickCount-FTime>0 gilt, dürften ja keine Probleme auftreten können...

Geändert von Z4ppy (18. Aug 2010 um 14:48 Uhr)
  Mit Zitat antworten Zitat