Moin, Moin.
Ein kleines Problem:
Mein Programm verwendet eine mit ZLibEx V1.2.3 komprimierte Datei. Um das Fehlerverhalten zu testen, habe ich absichtlich die komprimierte Datei "beschädigt". Erwartungsgemäß kann sie nun nicht mehr dekomprimiert werden und in ZLibEx wird eine
Exception ausgelöst - so soll es ja auch sein.
Aktiviere ich in den Debugger-Optionen die Auswahl "Bei Delphi-Exceptions stoppen" und starte das Programm, öffnet sich ein Fenster, in dem eine
Exception der Klasse EZDecompressionError und der Meldung 'data error' gemeldet wird. Also genau die Informationen, die von ZLibEx abgeschickt werden.
Sehr gut. Nun möchte ich dieses natürlich durch meinen Programmcode auswerten lassen und eine individuelle Meldung anzeigen. Also deaktiviere ich die Option in den Debugger-Optionen und nutze im Code ApplicationEvents.OnException(). Da an dieser Stelle natürlich alle möglichen Exceptions ankommen können, muss ich natürlich prüfen, ob die
Exception von der
Unit ZLibEx kommt. Nun erwarte ich, dass das übergebene
Exception-Objekt die notwendigen Informationen bereitstellt und ich (wie in der Debugger-Meldung) näheres erfahre. Aber diese Informationen kann ich nicht ermitteln - und das ist nun mein Problem:
Delphi-Quellcode:
procedure TfoMain.ApplicationEvents1Exception(Sender:TObject;E:
Exception);
begin
showmessage(e.ClassParent.ClassName);
// >> Anzeige : EExternal
showmessage(e.
Message);
// >> Anzeige : Zugriffsverletzung ....
showmessage(e.ClassName);
// >> Anzeige : EAccessViolation
end;
Die Informationen sind ja nicht schlecht, aber geben mir in dieser Form keine Auskunft, wer die
Exception ausgelöst hat.
Wäre über einen Tip sehr dankbar.