AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Warum keine Exception bei Division durch 0
Thema durchsuchen
Ansicht
Themen-Optionen

Warum keine Exception bei Division durch 0

Ein Thema von Jelly · begonnen am 19. Nov 2004 · letzter Beitrag vom 24. Nov 2004
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#1

Warum keine Exception bei Division durch 0

  Alt 19. Nov 2004, 11:10
Hallo,

ich bastle an einem größeren Projekt, und hab irgendwie einen Fehler im Code, was höchstwahrscheinlich durch eine Division durch 0 zurückzuführen ist. Deshalb hab ich jetzt einmal testweise folgenden Code probiert:

Delphi-Quellcode:
procedure TForm1.cmdNullClick(Sender: TObject);
var
 mu : double ;
begin
     mu := 5/0 ;
end;
rsp.
Delphi-Quellcode:
procedure TForm1.cmdNullClick(Sender: TObject);
var
 mu : double ;
begin
     mu := 0/0 ;
end;
Jetzt wundere ich mich aber, warums nicht knallt, wenn der Code ausgeführt. es passiert rein garnichts, und eventuell folgender Code wird normal weiter ausgeführt. Wieso gibts da keine Exception? Stattdessen zeigt ein
showmessage (FloatToStr(5/0)) ; mir ein INF an, ein
showmessage (FloatToStr(0/0)) ; ein NAN. Mathematisch ist wohl klar, aber mein gutes alte Turbo Pascal hat da immer eine Laufzeitfehlermeldung ausgegeben. Ich hab in den Delphi Einstellung bischen gekuckt, aber nirgends einen Schalter gefunden, der dieses Verhalten erklärt.

Gruß,
Tom
  Mit Zitat antworten Zitat
Benutzerbild von SubData
SubData

Registriert seit: 14. Sep 2004
Ort: Stuhr
1.078 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Warum keine Exception bei Division durch 0

  Alt 19. Nov 2004, 11:36
Ich glaub Delphi knallt nur raus, wenn du das mit nem Interger versuchst... Float / Double müsste gehen... Oder täusch ich mich da jetzt?
Ronny
/(bb|[^b]{2})/
  Mit Zitat antworten Zitat
Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Warum keine Exception bei Division durch 0

  Alt 19. Nov 2004, 11:39
Ist bei Fließkommazahlen schon richtig so. Such mal hier nach Hier im Forum suchenNaN (Not A Number), da solltest du die Erklärung kriegen.
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#4

Re: Warum keine Exception bei Division durch 0

  Alt 19. Nov 2004, 13:01
Hmm. Gibts denn ne Möglichkeit, via Compilerschalter o.ä. trotzdem ne Exception herbeizurufen. Hintergrund des Ganzen ist eine Monte Carlo Simulation, welche (wie es mir scheint), zu 99,999% und mehr funktionniert, nur ab und zu mir mit dieser Division durch 0 Probleme machen könnt. Bin halt noch auf der Fehlersuche... Ich halt vermeiden, bei jeder Division ein if...then...else zu schreiben, weil mir das definitiv zu aufwendig wird. Die ganze Simulation hat mittlerweilen paar tausend Zeilen Code, wo solche Division theoretisch relativ oft auftreten können... Zeile für Zeile das Ganze zu debuggen macht keinen Sinn, weil die ganze Rechnung ja zu 99,999% funktioniert.
  Mit Zitat antworten Zitat
Benutzerbild von jim_raynor
jim_raynor

Registriert seit: 17. Okt 2004
Ort: Berlin
1.251 Beiträge
 
Delphi 5 Standard
 
#5

Re: Warum keine Exception bei Division durch 0

  Alt 19. Nov 2004, 13:04
Achja. Mit diesem Problem kämpfe ich auch schon längere Zeit und habe noch keine Lösung gefunden. Man kann mal probieren das ControlWord der FPU zu ändern. Geht relativ einfach mit der JCL. Weiss jetzt nicht, wie die Unit/Funktion genau heisst aber glaube irgendwas mit 8087.
Christian Reich
Schaut euch mein X-COM Remake X-Force: Fight For Destiny ( http://www.xforce-online.de ) an.
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#6

Re: Warum keine Exception bei Division durch 0

  Alt 19. Nov 2004, 13:08
Zitat von jim_raynor:
ControlWord der FPU zu ändern
In dem Satz versteh ich nur "der", "zu" und "ändern"

Was bitte schön ist ein Controlword und eine FPU?
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#7

Re: Warum keine Exception bei Division durch 0

  Alt 19. Nov 2004, 13:09
Damit das Programm nur noch auf einer CPU läuft ? Ich würde einen anderen Zahlentyp testen: BCD oder so ähnlich. Mußt halt suchen.
Gruß
Hansa
  Mit Zitat antworten Zitat
Benutzerbild von jim_raynor
jim_raynor

Registriert seit: 17. Okt 2004
Ort: Berlin
1.251 Beiträge
 
Delphi 5 Standard
 
#8

Re: Warum keine Exception bei Division durch 0

  Alt 19. Nov 2004, 13:13
Okay. FPU bedeutet Floating Point Unit und ist quasi die CPU für alle Gleitkommaberechnungen (ist natürlich in der CPU integriert). Durch das ControlWord kann die FPU gesteuert werden, was denn bei Fehlern wie Division durch 0 passieren soll.
Christian Reich
Schaut euch mein X-COM Remake X-Force: Fight For Destiny ( http://www.xforce-online.de ) an.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#9

Re: Warum keine Exception bei Division durch 0

  Alt 19. Nov 2004, 13:14
Dein Beispiel-Code wird gar nicht ausgeführt. Der Compiler ist ja nicht blöd, er sieht, dass du die Varaible nie benutzt und optimiert sie weg.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von SubData
SubData

Registriert seit: 14. Sep 2004
Ort: Stuhr
1.078 Beiträge
 
Delphi 11 Alexandria
 
#10

Re: Warum keine Exception bei Division durch 0

  Alt 19. Nov 2004, 13:19
Prüf doch einfach ob die Zahl <> 0 ist, dann brauchste auch keine Exception mehr
Ronny
/(bb|[^b]{2})/
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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:39 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