AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

CPU-Verbrauch --> Debugger Exception

Ein Thema von Störtebeker · begonnen am 22. Sep 2007 · letzter Beitrag vom 22. Sep 2007
Antwort Antwort
Benutzerbild von Störtebeker
Störtebeker

Registriert seit: 9. Jul 2007
398 Beiträge
 
#1

CPU-Verbrauch --> Debugger Exception

  Alt 22. Sep 2007, 00:08
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.
"And he piled upon the whale´s white hump - a sum of all the rage and hate felt by his whole race.
If his chest had been a cannon, he would have shot his heart upon it."
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: CPU-Verbrauch --> Debugger Exception

  Alt 22. Sep 2007, 00:19
Moin Störtebeker,

wenn ich das richtig sehe, hast Du vergessen CPUCount zu initialisieren.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#3

Re: CPU-Verbrauch --> Debugger Exception

  Alt 22. Sep 2007, 06:30
der fehler sagt aus das du durch 0 teilst. Also einfach Haltepunkt auf diese zeile
Label15.Caption:=Format('%.1f %%',[TimeDelta / 10000 / CPUCount / TickDelta * 100]); und schauen welcher deiner Werte 0 ist.
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).
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von Störtebeker
Störtebeker

Registriert seit: 9. Jul 2007
398 Beiträge
 
#4

Re: CPU-Verbrauch --> Debugger Exception

  Alt 22. Sep 2007, 09:51
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.
"And he piled upon the whale´s white hump - a sum of all the rage and hate felt by his whole race.
If his chest had been a cannon, he would have shot his heart upon it."
  Mit Zitat antworten Zitat
WS1976
(Gast)

n/a Beiträge
 
#5

Re: CPU-Verbrauch --> Debugger Exception

  Alt 22. Sep 2007, 09:52
Hallo,
wenn ich davon ausgehe, dass CPUCount die Anzahl der prozessorkerne ist, so ist
Delphi-Quellcode:
Begin
  CPUCount:=1;
nach dem Begin die Lösung deines Problems.

Grüsse
Rainer
  Mit Zitat antworten Zitat
WS1976
(Gast)

n/a Beiträge
 
#6

Re: CPU-Verbrauch --> Debugger Exception

  Alt 22. Sep 2007, 09:54
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:
TimeDelta / 10000 / CPUCount / TickDelta * 100
Ist das hier eine rein mathematisch etwas bedenkliche Schreibweise.
Ich würde lieber zusätzlich Klammern setzen. (Aber das ist Ansichtssache)

Grüsse
Rainer
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:26 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz