![]() |
Delphi-Version: XE
Exception wird nicht angezeigt
Hallo,
ich habe in meinem Programm versucht, die Wurzel einer negativen Zahl zu ziehen, was natürlich nicht geht und im Programm inzwischen auch korrigiert ist. Was mich aber interessiert: Die Exception wurde auf meinem System nicht ausgelöst, weder im Debug-Modus, noch bei Start ohne Debugger. Auf dem Kundenrechner kam allerdings korrekt die Meldung "Invalid floating point operation". Ich habe inzwischen auch die Funktion SetExceptionMask gefunden, wenn ich
Code:
vor die fehlerhafte Anweisung setze, wird die Exception auch ausgelöst. Aber z.b. eine Division durch null löst eine Exception aus, obwohl exZeroDivide auch in der ExceptionMask drin steht. An der Exceptionmask fummle ich sonst im Programm nirgends rum.
SetExceptionMask(GetExceptionMask -[exInvalidOp]);
Wer kann mir hier die Zusammenhänge noch etwas erläutern bzw. einen aufklärenden Link schicken. Gruß Rainer |
AW: Exception wird nicht angezeigt
Zeig mal den ursprünglichen Code.
|
AW: Exception wird nicht angezeigt
Zitat:
Hoehe hat nach der Operation den Wert -NAN
Code:
//SetExceptionMask(GetExceptionMask -[exInvalidOp]);
Hoehe:=Einstellungen.LaengeSchere-sqrt(Sqr(Einstellungen.Laengeschere)-sqr(hoehe)); |
AW: Exception wird nicht angezeigt
Hm, kann ich nicht nachvollziehen:
Delphi-Quellcode:
Exception wird ausgelöst und gefangen.
procedure TForm1.btn1Click(Sender: TObject);
var Hoehe: Double; begin try Hoehe:=50-sqrt(Sqr(5)-sqr(25)); ShowMessage(FloatToStr(Hoehe)); except on E: Exception do ShowMessage(E.Message); end; end; |
AW: Exception wird nicht angezeigt
Zufälligerweise eine HP-Drucker installiert? AFAIK stellen/stellten diese Systemweit an der Exception-Maske rum.
|
AW: Exception wird nicht angezeigt
Zitat:
|
AW: Exception wird nicht angezeigt
Zitat:
|
AW: Exception wird nicht angezeigt
Suuuuper, wenn irgendwas aus unerklärlichen Gründen nicht richtig läuft, darf man dann nicht nur nach Logitech-, sondern auch nach HP-Hardware fragen :wall: (was denken die sich eigentlich alle?)
|
AW: Exception wird nicht angezeigt
Hm, ein HP-Drucker ist nicht installiert, aber der Laptop ist von HP. Und der Monitor ebenfalls :?.
Außerdem muss es an irgendwelchen Einstellungen liegen, denn eben habe ich ein neues, einfaches Projekt erstellt, das kann die Exception. Aber bewusst habe ich halt mal wieder nirgends rum gepfuscht, über so was stolpert man irgendwann in einem komplexen Projekt und steht dann wieder da wie der Ochs vorm Berg. |
AW: Exception wird nicht angezeigt
Zitat:
|
AW: Exception wird nicht angezeigt
Man muss es ja wirklich nicht verstehen, aber folgendes passiert auf meiner Kiste:
Ich habe eine einfache VCL-App erstellt, zwei Buttons, eine IBDatabase. Wenn ich das Programm starte und Button1 drücke, erhalte ich die Exception. Wenn ich mit Button2 die Datenbank connecte und dann wieder Button 1 drücke, passiert nix mehr, keine Exception. ???? :wall:
Code:
procedure TForm4.Button1Click(Sender: TObject);
var wurzel:Double; begin wurzel:=Sqrt(-5); end; procedure TForm4.Button2Click(Sender: TObject); begin with IBDataBase do begin Connected := False; DatabaseName := 'e:\data\test.gdb'; Params.Values['user_name'] := 'sysdba'; Params.Values['password'] := 'masterkey'; Connected := True; end; end; |
AW: Exception wird nicht angezeigt
Da werden wohl die IB-Klassen an der Exception-Mask "rumspielen".
Such mal im Quellcode von IB nach Aufruf von SetExceptionMask. |
AW: Exception wird nicht angezeigt
Zitat:
Andererseits ist es ja so, dass die Exception auf einem anderen System ausgelöst wird, und dort ist das selbe Programm verbaut. Demnach kann's auch nicht einfach am Quelltext von Interbase liegen. Die Firebird-Versionen sind auf den beiden Systemen noch unterschiedlich (ja, ich weiss, IBX und Firebird vertragen sich immer schlechter, ich benutz IB auch nur noch wegen der IBEvents), und auf meiner Kiste ist halt einiges mehr installiert als auf dem Produktionsrechner. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:18 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-2025 by Thomas Breitkreuz