Einzelnen Beitrag anzeigen

IceTube
(Gast)

n/a Beiträge
 
#1

[indy]Verbleibende Zeit eines Downlods anzeigen

  Alt 21. Jun 2008, 17:13
Hallo!

Ich hab gesucht und gesucht, jedoch bin ich nicht fündig geworden(zumindest nich hier im Forum), nämlich die Dauer eines Downloads anzuzeigen.

Also habe ich mir gedacht, schau ma mal ob ich das (mehr oder weniger) selber hinbekomme. Nun zu meinen Ergebnis

Im großen und ganzen funktioniert es, und hier der Code:

Delphi-Quellcode:

//Variablen
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
FBytes,FTime : real;
Max : real;
end;

procedure TForm1.httpWork(ASender: TObject; AWorkMode: TWorkMode;
  AWorkCount: Integer);
var speed,R : real;
min,sec : real;
begin
Application.ProcessMessages;

//Berechne Speed
if not((GetTickCount - FTime) <= 0) then begin
speed := strToFloat(Format('%.2f', [(AWorkCount - FBytes) / (GetTickCount - FTime)]));
end;

//Verbleibende Zeit
if(speed > 0) then begin
//
try
//Versuche die (Gesamtgröße - aWorkCount) durch die Geschwindigkeit zu dividieren
R := Round((Max-aWorkCount)/speed);
except
end;
//
try
//Sekunden berechnen - wieso es durch 1000 geht, weiß ich nicht so genau ...
Sec := Round(R / 1000);

//Minuten - natürlich Sekunden durch 60 dividieren
Min := Round(Sec / 60);
Sec := Sec - (Min*60);

//Kontrolle der Werte
if Sec < 0 then Sec := Sec *(-1);
if Min < 0 then Min := 0;
except
end;

//Ausgeben
xZeit.Caption := floatToStr(Min)+':'+floatToStr(Sec);

end;

//Werte erfassen
FTime := GetTickCount;
FBytes := aWorkCount;
end;

procedure TForm1.httpWorkBegin(ASender: TObject; AWorkMode: TWorkMode;
  AWorkCountMax: Integer);
begin
//Gesamtgröße
Max := AWorkCountMax;

//Werte erfassen
FTime := GetTickCount;
FBytes := 0;
end;
So, ich hoffe das hilft einigen!

Ps.:
Ein paar Feedbacks wären schön!

lg
  Mit Zitat antworten Zitat