Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Auf programmweite Exceptions reagieren (https://www.delphipraxis.net/73057-auf-programmweite-exceptions-reagieren.html)

Balu der Bär 11. Jul 2006 17:57


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,

Dax 11. Jul 2006 18:02

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:
unit ExceptionLogger;

{...}

implementation

{...}

var
  Logger: TExceptionLogger;

initialization

  Logger := TExceptionLogger.Create;
  Application.OnException := Logger.LogException;

finalization
 
  Logger.Free;

end.
Da es im Programm ja eh nur eine Instanz von Application geben kann, führt das auch zu keinen Problemen :)

Balu der Bär 11. Jul 2006 18:20

Re: Auf programmweite Exeptions reagieren
 
Tatsache. :shock:

Danke dir, manchmal fehlt mir scheinbar der Klaps auf den Hinterkopf. :mrgreen:

Dax 11. Jul 2006 18:21

Re: Auf programmweite Exeptions reagieren
 
Zitat:

Zitat von Balu der Bär
Danke dir, manchmal fehlt mir scheinbar der Klaps auf den Hinterkopf. :mrgreen:

Kein Wunder, die haben ja alle Angst dabei ihre Hand zu verlieren :mrgreen:

Stefan Hueg 11. Jul 2006 18:41

Re: Auf programmweite Exeptions reagieren
 
Das wäre eine Möglichkeit. Wenn du allerdings mit Kanonen auf Tauben schießen willst:
madExcept

Balu der Bär 12. Jul 2006 10:04

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:
function GetSomeData(): PChar; stdcall; external '.\lib\data.dll';

procedure TForm1.Button1Click(Sender: TObject);
var
data : String;
begin
 data := GetSomeData;
end;
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?

@Stefan: Danke dir, aber das ist mir dann doch etwas zu ausführlich. ;)

jfheins 12. Jul 2006 10:26

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