Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Exception wird nicht angezeigt (https://www.delphipraxis.net/163456-exception-wird-nicht-angezeigt.html)

Rainer Wolff 29. Sep 2011 11:31

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:
SetExceptionMask(GetExceptionMask -[exInvalidOp]);
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.

Wer kann mir hier die Zusammenhänge noch etwas erläutern bzw. einen aufklärenden Link schicken.

Gruß Rainer

Luckie 29. Sep 2011 11:50

AW: Exception wird nicht angezeigt
 
Zeig mal den ursprünglichen Code.

Rainer Wolff 29. Sep 2011 12:07

AW: Exception wird nicht angezeigt
 
Zitat:

Zitat von Luckie (Beitrag 1127447)
Zeig mal den ursprünglichen Code.

Da ist jetzt eigentlich nix besonderes dran, ich habe halt einfach die Parameter nicht kontrolliert.
Hoehe hat nach der Operation den Wert -NAN
Code:
  //SetExceptionMask(GetExceptionMask -[exInvalidOp]);
  Hoehe:=Einstellungen.LaengeSchere-sqrt(Sqr(Einstellungen.Laengeschere)-sqr(hoehe));

Luckie 29. Sep 2011 12:20

AW: Exception wird nicht angezeigt
 
Hm, kann ich nicht nachvollziehen:
Delphi-Quellcode:
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;
Exception wird ausgelöst und gefangen.

Bernhard Geyer 29. Sep 2011 12:31

AW: Exception wird nicht angezeigt
 
Zufälligerweise eine HP-Drucker installiert? AFAIK stellen/stellten diese Systemweit an der Exception-Maske rum.

Luckie 29. Sep 2011 12:35

AW: Exception wird nicht angezeigt
 
Zitat:

Zitat von Bernhard Geyer (Beitrag 1127454)
Zufälligerweise eine HP-Drucker installiert? AFAIK stellen/stellten diese Systemweit an der Exception-Maske rum.

Das ist jetzt nicht dein Ernst? :shock:

Bernhard Geyer 29. Sep 2011 12:49

AW: Exception wird nicht angezeigt
 
Zitat:

Zitat von Luckie (Beitrag 1127455)
Zitat:

Zitat von Bernhard Geyer (Beitrag 1127454)
Zufälligerweise eine HP-Drucker installiert? AFAIK stellen/stellten diese Systemweit an der Exception-Maske rum.

Das ist jetzt nicht dein Ernst? :shock:

Doch. Wenn es ein Druckertreiber ist der sich in jeden Prozess rein hängt und entsprechend die Exception-Maske nach eigenen Vorstellungen ändert. Wurde vor Jahren im Entwickler-Forum.de von A. Kosch entsprechend heraus gefunden.

DeddyH 29. Sep 2011 12:55

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?)

Rainer Wolff 29. Sep 2011 13:50

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.

Luckie 29. Sep 2011 13:53

AW: Exception wird nicht angezeigt
 
Zitat:

Zitat von Bernhard Geyer (Beitrag 1127462)
Zitat:

Zitat von Luckie (Beitrag 1127455)
Zitat:

Zitat von Bernhard Geyer (Beitrag 1127454)
Zufälligerweise eine HP-Drucker installiert? AFAIK stellen/stellten diese Systemweit an der Exception-Maske rum.

Das ist jetzt nicht dein Ernst? :shock:

Doch. Wenn es ein Druckertreiber ist der sich in jeden Prozess rein hängt und entsprechend die Exception-Maske nach eigenen Vorstellungen ändert. Wurde vor Jahren im Entwickler-Forum.de von A. Kosch entsprechend heraus gefunden.

Ist was über den Verbleib der Verantwortlichen Personen bekannt? Wurden sie schon geteert und gefedert? Sind sie auf der Flucht? Wurden sie schon von Interpol zur Fahndung ausgeschrieben? Hat Obama schon ein Navy Seals Team los geschickt? Sind sie von ihren eigenen geworfenen Exceptions erschlagen worden? Das kann ja wohl nicht wahr sein. Nur weil ich nicht in der Lage bin sauberen Code zu schreiben, eben mal so einen Murks zu fabrizieren.


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:11 Uhr.
Seite 1 von 2  1 2      

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