Auf programmweite Exceptions reagieren
Moin,
kurze Frage da ich zu diesem Thema nicht mehr weiter weiß. Ich hab ein Programm, mit mehreren Formularen. Sobald irgendwo eine Exception auftritt soll in eine Logdatei geschrieben werden. Jetzt könnte ich natürlich auf jede Form ein TApplicationsEvents klatschen, und in deren OnException-Event reagieren. Bloß ist das eventuell etwas umständlich, da ich alles 5mal machen muss. Kennt jemand Alternativen wie man sowas machen könnte? Danke euch, |
Re: Auf programmweite Exeptions reagieren
Was spricht denn gegen eine Klasse TExceptionLogger, die einzig auf das OnException-Event reagiert? :) Wenn du das Ding in eine eigene Unit tust an deren Ende so was anfügst, sollt es tun was du willst.
Delphi-Quellcode:
Da es im Programm ja eh nur eine Instanz von Application geben kann, führt das auch zu keinen Problemen :)
unit ExceptionLogger;
{...} implementation {...} var Logger: TExceptionLogger; initialization Logger := TExceptionLogger.Create; Application.OnException := Logger.LogException; finalization Logger.Free; end. |
Re: Auf programmweite Exeptions reagieren
Tatsache. :shock:
Danke dir, manchmal fehlt mir scheinbar der Klaps auf den Hinterkopf. :mrgreen: |
Re: Auf programmweite Exeptions reagieren
Zitat:
|
Re: Auf programmweite Exeptions reagieren
Das wäre eine Möglichkeit. Wenn du allerdings mit Kanonen auf Tauben schießen willst:
madExcept |
Re: Auf programmweite Exeptions reagieren
Ok, ich habe es jetzt nach dem Modell von Dax gemacht. Klappt auch, die Exceptions werden abgefangen.
Hab ich aber sowas im Quellcode,
Delphi-Quellcode:
und die DLL ist nicht in dem Ordner vorhanden, bekomme ich eine Fehlermeldung das die DLL nicht gefunden wurde, ich solle die Applikation doch neu installieren. Das heißt das die Exception irgendwie nicht abgefangen wird. Kann man da was machen?
function GetSomeData(): PChar; stdcall; external '.\lib\data.dll';
procedure TForm1.Button1Click(Sender: TObject); var data : String; begin data := GetSomeData; end; @Stefan: Danke dir, aber das ist mir dann doch etwas zu ausführlich. ;) |
Re: Auf programmweite Exceptions reagieren
Du musst dann die dll zur laufzeit einbinden.
Bei der Methode, wie du sie jetzt gerade praktiziert, kommt die Fehlermeldung, noch bevor die main-loop anfängt - du hast also absolut kinen einfluss darauf und kannst sie auch nit abfangen. Das ist quasi wie .... vorne inner exe steht drin "ich brauch' dll xyz" der exe-loader sieht das, sieht dass sie nicht existiert und schmeisst dir den fehler annen kopf anstatt die exe zu laden ;) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:26 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