Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   EZero devide Gleitkommadivison durch null Fehler (https://www.delphipraxis.net/164033-ezero-devide-gleitkommadivison-durch-null-fehler.html)

sneumann 26. Okt 2011 13:30

EZero devide Gleitkommadivison durch null Fehler
 
beim debuggen schickt mir delphi immer eine Division durch null fehlermeldung:
auszug der zeile wo er meckert, obwohl das programm ohne delphi aber perfekt funktioniert auf nem anderen pc...
Delphi-Quellcode:
calFactorB[Channel] := (Sollval[Channel,1]-Sollval[Channel,0])/abs((mwval[Channel,1])-mwval[Channel,0]);
manchmal zeigt er mir die fehlermeldung an manchmal nicht
jemand einen tipp?? er geht bei mir im programm ein paar schleifen durch und misst temperatur werte aus einem messgerät und setzt werte ins gerät.. manchmal kommt die meldung manchmal nicht:

EZeroDevide , Gleitkomma division durch null ...fehler meldung

CCRDude 26. Okt 2011 13:36

AW: EZero devide Gleitkommadivison durch null Fehler
 
Sehr sehr komisch... könnte es vielleicht sein, daß sie nur dann kommt, wenn
Delphi-Quellcode:
abs((mwval[Channel,1])-mwval[Channel,0]) = 0
?

Ich weiß, das ist völlig abwegig, gerade bei dem Namen der Meldung, aber meine Glaskugel munkelt gerade so etwas...

Maya 26. Okt 2011 13:38

AW: EZero devide Gleitkommadivison durch null Fehler
 
Sowas kann man zur Not mit Try-Except abfangen bzw. auch durch eine If-Then-Else-Anweisung ausschließen.

himitsu 26. Okt 2011 13:44

AW: EZero devide Gleitkommadivison durch null Fehler
 
Zitat:

Zitat von Maya (Beitrag 1132638)
Sowas kann man zur Not mit Try-Except abfangen bzw. auch durch eine If-Then-Else-Anweisung ausschließen.

Besser Letzteres, denn unnötige Exceptions machen einem das Debuggen zur Hölle.
Also nachsehn, ob der Divisor 0 ist und entsprechend handeln.

Maya 26. Okt 2011 13:45

AW: EZero devide Gleitkommadivison durch null Fehler
 
Zitat:

Zitat von himitsu (Beitrag 1132643)
Zitat:

Zitat von Maya (Beitrag 1132638)
Sowas kann man zur Not mit Try-Except abfangen bzw. auch durch eine If-Then-Else-Anweisung ausschließen.

Besser Letzteres, denn unnötige Exceptions machen einem das Debuggen zur Hölle.
Also nachsehn, ob der Divisor 0 ist und entsprechend handeln.

Deswegen schrieb ich ja auch "zur Not". Hab mich vielleicht bissl doof ausgedrückt, ich bevorzuge bei sowas auch immer das simple If-Then-Else-Gefummel. ;)

Bjoerk 26. Okt 2011 14:14

AW: EZero devide Gleitkommadivison durch null Fehler
 
In Delphi liefert System.Abs max. einen Real zurück, du verwendest aber vermutlich double?

Delphi-Quellcode:
function Abs(const X: double): double;
begin
  Result:= X;
  if Result < 0 then Result:= -Result;
end;
Ob der Nenner Null ist, solltest du aber dennoch abfragen.

p80286 26. Okt 2011 15:30

AW: EZero devide Gleitkommadivison durch null Fehler
 
Zitat:

Zitat von CCRDude (Beitrag 1132635)
Sehr sehr komisch... könnte es vielleicht sein, daß sie nur dann kommt, wenn
Delphi-Quellcode:
abs((mwval[Channel,1])-mwval[Channel,0]) = 0
?

Ich weiß, das ist völlig abwegig, gerade bei dem Namen der Meldung, aber meine Glaskugel munkelt gerade so etwas...

Kann ich auch nicht glauben, das wäre einer der seltenen Fälle wo Fehlermeldung und Fehler in einem direkten Zusammenhang stehen?

Gruß
K-H


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:16 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