![]() |
Delphi-Version: 7
"Ungültige Gleitkommaoperation" Fehler finden?
Hallo,
ich suche schon seit Wochen den "Ungültige Gleitkommaoperation" Fehler und finde nicht wo dieser im Code (ca. 6000 Zeilen) ausgelöst wird. Der erscheint auch sehr selten, dass ich nicht dahinter komme, welche Klicks ihn auslösen... bin schon am verzweifeln. :roteyes: Kann man diesen vllt irgendwie ohne Debugger finden oder wenigstens eingrenzen? Danke! Edit: kann diese Zeile den Fehler auslösen, wenn SendBitrate String ist?
Delphi-Quellcode:
if (SendBitrate <> '') and (StrToInt(SendBitrate) >= 16) and (StrToInt(SendBitrate) <= 256) then
|
AW: "Ungültige Gleitkommaoperation" Fehler finden?
Es gib sowas wie Eurekalog und das Andere, dessen Name ich immer vergesse,
die bieten dir bei Exceptions praktiche Zusatzinfos an, wie z.B. einen Stacktrace. Auch in den Jedi ist etwas enthalten. Nein, da sind ja nur Integer, also Ganzzahlen, und keine Gleitkomma-/Fließkommazahlen. |
AW: "Ungültige Gleitkommaoperation" Fehler finden?
Ich dachte einfach, dass '' (also leerer String) nicht in Int konvertiert werden kann.
|
AW: "Ungültige Gleitkommaoperation" Fehler finden?
'' kann auch nicht nach Integer konvertiert werden, genauso wie alles was keine Zahl ist, wie z.B. '-', 'a', 'a1' usw.
TryStrTo... und StrTo...Def
Delphi-Quellcode:
if TryStrToInt(SendBitrate, i) and (i >= 16) and (i <= 256) then
* erspart das doppelte Umwandeln * und kann auf Fehler prüfen, ohne daß es zu einer Exception kommt |
AW: "Ungültige Gleitkommaoperation" Fehler finden?
|
AW: "Ungültige Gleitkommaoperation" Fehler finden?
Zudem könntest du nach Divisionen oder ähnlichen Rechenoperationen suchen. ;-)
|
AW: "Ungültige Gleitkommaoperation" Fehler finden?
Zitat:
|
AW: "Ungültige Gleitkommaoperation" Fehler finden?
Zitat:
|
AW: "Ungültige Gleitkommaoperation" Fehler finden?
eine (lokale) Variable des Typs Integer
Delphi-Quellcode:
versucht den String in einen Integer (i) zu wandeln
TryStrToInt
ist es möglich (Result = true) dann steht in i der gewandelte Wert geht's nicht, dann sollte man auf den Rückgabewert Result = false reagieren |
AW: "Ungültige Gleitkommaoperation" Fehler finden?
Zitat:
|
AW: "Ungültige Gleitkommaoperation" Fehler finden?
@AlexII: Arbeitest du mit TWebBrowser, ActiveX-Elementen oder OpenGL?
Wenn ja, versuche folgendes zu implementieren, irgendwo in einen initialization- oder class constructor-Abschnitt.
Delphi-Quellcode:
Siehe auch:
uses
System.Math; ... var ExceptionMask : TArithmeticExceptionMask; begin ExceptionMask := GetExceptionMask; Include(ExceptionMask, exInvalidOp); SetExceptionMask(ExceptionMask); end; ![]() |
AW: "Ungültige Gleitkommaoperation" Fehler finden?
Danke Dir, aber ich habe eigentlich keine arithmetischen Operationen... aber ich arbeite mit ListBoxen. Ich vermute schon, dass der Fehler damit verbunden ist, dass da irgendwo auf ItemIdex -1 zugegriffen wird, aber wo finde ich auch nicht.
|
AW: "Ungültige Gleitkommaoperation" Fehler finden?
Das würde aber andere Fehler werfen (ListIndex out of bounds).
|
AW: "Ungültige Gleitkommaoperation" Fehler finden?
Dann muss es wohl an dieser Zeile liegen, oder an der SendBitrate an anderer Stelle... weil das ist fast das Einzige was ich neu hinzugefügt habe, bevor der Fehler kam.
Delphi-Quellcode:
Werde es mit TryStrToInt versuchen.
if (SendBitrate <> '') and (StrToInt(SendBitrate) >= 16) and (StrToInt(SendBitrate) <= 256) then
|
AW: "Ungültige Gleitkommaoperation" Fehler finden?
Das müsste aber ggf. einen EConvertError auslösen, kann es also eigentlich auch nicht sein. Wie schon oben angedeutet musst Du irgendwo mit Gleitkommazahlen rechnen (vielleicht auch indirekt über irgendwelche Komponenten).
|
AW: "Ungültige Gleitkommaoperation" Fehler finden?
Zitat:
|
AW: "Ungültige Gleitkommaoperation" Fehler finden?
Bei der Konvertierung eines ungültigen Strings zu Integer kommt doch eher ein "Ist kein gültiger Integer Wert" oder so ähnlich. Der Gleitkomma-Fehler hat eher etwas mit falschen Dezimaltrennern (oder auch Tausendertrennzeichen) zu tun, auch schon wenn man mit Datum hantiert.
Sherlock |
AW: "Ungültige Gleitkommaoperation" Fehler finden?
Zitat:
|
AW: "Ungültige Gleitkommaoperation" Fehler finden?
Zitat:
(1) lokalisieren, dann (2) reproduzieren dann <-------- (3) eliminieren (aka reparieren). Und wenn das nicht hilft. dann (3a) kaschieren. |
AW: "Ungültige Gleitkommaoperation" Fehler finden?
Setzt Du irgendwo einen Farbcode ein?
|
AW: "Ungültige Gleitkommaoperation" Fehler finden?
TColor-Werte verursachen einen Floating Point Error?
BTW: Handelt es sich um eine FMX-Anwendung? |
AW: "Ungültige Gleitkommaoperation" Fehler finden?
Zitat:
|
AW: "Ungültige Gleitkommaoperation" Fehler finden?
Wo ist das Icon, wo man in den Boden vor Scham versinkt?:stupid:
|
AW: "Ungültige Gleitkommaoperation" Fehler finden?
Zitat:
Was kann den daran falsch sein? |
AW: "Ungültige Gleitkommaoperation" Fehler finden?
Besorg dir madExcept. Kostnix. Die Jedis haben das auch -glaub ich-
Aber mit madExcept kannst Du dir sogar eine E-Mail zuschicken lassen, wenn ein Fehler auftritt und im Anhang der Mail ist eine Datei und wenn Du da raufklickst, dann öffnet sich Delphi und springt genau in die Zeile, wo der Fehler aufgetreten ist :shock: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:54 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