Hi,
wollte mit Hilfe eines Timers und einem Label den CPU-Verbrauch meines Programms anzeigen und stoße auf folgendes Problem:
Code für den Timer:
Delphi-Quellcode:
.
.
.
{$R *.dfm}
var
LastTick : LongWord;
LastTime : Int64;
CPUCount : Word;
.
.
.
procedure TForm5.Timer3Timer(Sender: TObject);
Var
CreationTime,
ExitTime,
KernelTime,
UserTime : TFILETIME;
TickDelta : LongWord;
TimeDelta : Int64;
begin
TickDelta:=GetTickCount() - LastTick;
Inc(LastTick,TickDelta);
GetProcessTimes(GetCurrentProcess(),CreationTime,ExitTime,KernelTime,UserTime);
TimeDelta:=(Int64(KernelTime) + Int64(UserTime)) - LastTime;
Inc(LastTime,TimeDelta);
Label15.Caption:=Format('%.1f %%',[TimeDelta / 10000 / CPUCount / TickDelta * 100]);
end;
.
.
.
wenn ich auf Starten drücke, kommt Delphi kurz darauf mit:
Zitat:
Debugger Exception Notification
Project Project1.exe raised
exception class EZeroDivide with message "Floating point division by zero". Process stopped. Use Step or Run to continue.
Irgendwie finde ich den Fehler nicht. Ich hoffe sehr auf eure Hilfe.
mfG
Störtebeker
P.S.: Ohne den Code funzt das Programm. Also muss der Fehler im Code des Timers liegen.