AGB  ·  Datenschutz  ·  Impressum  







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

timeGetTime Division durch 0

Ein Thema von EWeiss · begonnen am 27. Mär 2012 · letzter Beitrag vom 27. Mär 2012
Antwort Antwort
EWeiss
(Gast)

n/a Beiträge
 
#1

timeGetTime Division durch 0

  Alt 27. Mär 2012, 18:18
Um mein Fenster(bis es grau ist) stepweise einzufaden verwende ich timeGetTime
Mein Problem dabei ist nun das wenn ich die Anwendung debugge das ich ein Division durch 0 erhalte bedingt durch den Haltepunkt.
Wie kann ich diesen fehler abfangen?

WinProcessmessages scheint dafür nicht die ideale lösung.

gruss
  Mit Zitat antworten Zitat
Benutzerbild von BUG
BUG

Registriert seit: 4. Dez 2003
Ort: Cottbus
2.094 Beiträge
 
#2

AW: timeGetTime Division durch 0

  Alt 27. Mär 2012, 18:29
Bei was genau erhälst du eine Division durch Null?
Wenn du irgendwie durch eine Variable teilst: überprüfe sie doch einfach vorher und setze sie etweder auf einen vernünftigen Wert oder lass dann das Dividieren.
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#3

AW: timeGetTime Division durch 0

  Alt 27. Mär 2012, 18:42
Bei was genau erhälst du eine Division durch Null?
Wenn du irgendwie durch eine Variable teilst: überprüfe sie doch einfach vorher und setze sie etweder auf einen vernünftigen Wert oder lass dann das Dividieren.
Mach ich doch timeGetTime läuft weiter oder ? Wie soll ich das aufhalten..

Delphi-Quellcode:
   for IntI := 0 to 100 do
   begin
    dwStartCount := timeGetTime;

      if m_hNewBitmap <> 0 then
      begin
         DeleteObject(m_hNewBitmap);
         m_hNewBitmap := 0;
      end;

      m_hNewBitmap := FadeBitmap(m_hBitmap, IntI);

      OnDraw(ClientDC);

      dwEndCount := timeGetTime;

      if nStep = 0 then
      begin
         // timer frequency calculation
         if (dwEndCount > dwStartCount) then
            nStep := 1500 div (dwEndCount - dwStartCount)
         else
         nStep := 20;

         // time to frequency
         nStep := 100 div nStep;

         nStep := max(nStep, 3);
         nStep := min(nStep, 49);

      end;
   end;
Hier kracht es meistens
Aber nur wenn ich die Schleife duch einen Haltepunkt unterbreche.


nStep := 100 div nStep;

gruss

Geändert von EWeiss (27. Mär 2012 um 18:48 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#4

AW: timeGetTime Division durch 0

  Alt 27. Mär 2012, 19:40
Wie kann ich diesen fehler abfangen?
Dafür sorgen, daß der Divisor nicht 0 ist.
Das ist die einzige korrekte Möglichkeit.

Via IF prüfen, ob 0 und dann was Anderes machen.
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.475 Beiträge
 
Delphi 12 Athens
 
#5

AW: timeGetTime Division durch 0

  Alt 27. Mär 2012, 20:05
Wenn das Programm am BreaakPoint anhält, kann es vorkommen, daß die Differenz der beiden TimeStamps größer als 1500 ms ist. Dann wird nStep = 0.

Daß kann übrigens auch durch einen längeren Aufenthalt in OnDraw passieren.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#6

AW: timeGetTime Division durch 0

  Alt 27. Mär 2012, 20:06
Wie kann ich diesen fehler abfangen?
Dafür sorgen, daß der Divisor nicht 0 ist.
Das ist die einzige korrekte Möglichkeit.

Via IF prüfen, ob 0 und dann was Anderes machen.
Versteh ich schon da bleibt mir nix anderes übrig.

Delphi-Quellcode:
  if nStep = 0 then
  break;
      
  // time to frequency
  nStep := 100 div nStep;
Zitat:
Daß kann übrigens auch durch einen längeren Aufenthalt in OnDraw passieren.
Will nicht hoffen dass das passiert dann wäre mein Bild nur Halb Grau
In dem Fall müßte ich mir noch was anderes überlegen.
Das zeichnen sollte aber eigentlich in 1.5 Sekunden erledigt sein.

gruss

Geändert von EWeiss (27. Mär 2012 um 20:11 Uhr)
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.070 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: timeGetTime Division durch 0

  Alt 27. Mär 2012, 22:55
Mir fehlt ein bisschen der Kontext und weiterer Quellcode, um das Ursprungsproblem zu verstehen, aber warum nimmst du nicht einfach einen TTimer und machst das Schrittweise einfaden über OnTimer?
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#8

AW: timeGetTime Division durch 0

  Alt 27. Mär 2012, 22:59
Mir fehlt ein bisschen der Kontext und weiterer Quellcode, um das Ursprungsproblem zu verstehen, aber warum nimmst du nicht einfach einen TTimer und machst das Schrittweise einfaden über OnTimer?
Danke im moment geht es ja..
Sollte jedoch das Faden nicht so sein wie ich es mir wünsche (abhängig von der Zeit) wäre das eine alternative.

PS:
TTimer kann ich so nicht verwenden müßte dann ein APITimer sein (bzw. bevorzugt) da ich über keine Form in der DLL verfüge.
Wäre aber kein problem das zu machen .. notfalls

gruss

Geändert von EWeiss (27. Mär 2012 um 23:03 Uhr)
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.686 Beiträge
 
Delphi 2007 Enterprise
 
#9

AW: timeGetTime Division durch 0

  Alt 27. Mär 2012, 23:16
Nen Thread eventuell? Damit mach ich eh immer meine Fading-Forms. Ziemlich handlich!
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  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 23:47 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