![]() |
CPU-Verbrauch --> Debugger Exception
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:
wenn ich auf Starten drücke, kommt Delphi kurz darauf mit:
.
. . {$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; . . . Zitat:
mfG Störtebeker P.S.: Ohne den Code funzt das Programm. Also muss der Fehler im Code des Timers liegen. |
Re: CPU-Verbrauch --> Debugger Exception
Moin Störtebeker,
wenn ich das richtig sehe, hast Du vergessen CPUCount zu initialisieren. |
Re: CPU-Verbrauch --> Debugger Exception
der fehler sagt aus das du durch 0 teilst. Also einfach Haltepunkt auf diese zeile
Delphi-Quellcode:
und schauen welcher deiner Werte 0 ist.
Label15.Caption:=Format('%.1f %%',[TimeDelta / 10000 / CPUCount / TickDelta * 100]);
Zudem solltest du den Variablen vorher auch Werte zuweisen. Wie Christian Seehase hast du CPUCount zum Beispiel nix zugewiesen und darfst auch nicht davon ausgehen das es 0 ist. Denn lokale Variablen den nicht zugewiesen wurde enhalten einen zufälligen wert. Aber selbst wenn es 0 ist hast du ein Problem weil teilen durch 0 nicht erlaubt ist (mathematich nicht erlaubt). |
Re: CPU-Verbrauch --> Debugger Exception
Thx. für eure Tipps. Es geht jetzt. Das Problem war, ich musste den Code auch noch ins FormCreate Ereignis setzten, zusätzlich zum TimerEreignis.
Trotzdem Danke. |
Re: CPU-Verbrauch --> Debugger Exception
Hallo,
wenn ich davon ausgehe, dass CPUCount die Anzahl der prozessorkerne ist, so ist
Delphi-Quellcode:
nach dem Begin die Lösung deines Problems.
Begin
CPUCount:=1; Grüsse Rainer |
Re: CPU-Verbrauch --> Debugger Exception
Hallo Störtebecker,
das kann nicht die Lösung deines Problems sein CPUCount ist völlig willkürlich gesetzt und das hat nichts damit zu tun ob das Ganze im create oder timer steht. Ausserdem: Zitat:
Ich würde lieber zusätzlich Klammern setzen. (Aber das ist Ansichtssache) Grüsse Rainer |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:40 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz