Zitat von
Apollonius:
StrToFloat zusammen mit Format solltest du dir abgewöhnen - ich sehe auch keinen Sinn darin. Und entferne diese ganzen Try-Except-Blöcke. Du solltest Exceptions vermeiden, nicht schlucken.
Stimmt eigentlich
Hab in dem neuen Code das korrigiert!
Ich hab die Lösung jetzt gefunden...
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) >= 1000) then begin
speed := (AWorkCount - FBytes) / (GetTickCount - FTime);
//Werte erfassen
FTime := GetTickCount;
FBytes := 0;
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;
lg