Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Exception vor Application.Initialize (https://www.delphipraxis.net/83349-exception-vor-application-initialize.html)

Harry M. 31. Dez 2006 15:34


Exception vor Application.Initialize
 
Hallöchen

Wie kann ich eine Exception noch vor Application.Initialize abfangen (und ggf. behandeln).

Das Problem tritt beim Laden einer DLL auf, weil die verwendete Funktion erst ab XP SP 2 unterstützt wird.

Die einfache Abfrage ob die gewünschte DLL verfügbar ist, ist ja nicht das Problem, die besteht viel mehr darin, das die Exception noch vor Application.Initialize auftritt. Also noch bevor irgendwelcher Code zu tragen kommt. Oder wie oder was :gruebel:

Gruß Harry
und allen eine "Guten Rutsch"

Reinhard Kern 31. Dez 2006 16:13

Re: Exception vor Application.Initialize
 
Zitat:

Zitat von Harry M.
Hallöchen

Wie kann ich eine Exception noch vor Application.Initialize abfangen (und ggf. behandeln).

Das Problem tritt beim Laden einer DLL auf, weil die verwendete Funktion erst ab XP SP 2 unterstützt wird.

Die einfache Abfrage ob die gewünschte DLL verfügbar ist, ist ja nicht das Problem, die besteht viel mehr darin, das die Exception noch vor Application.Initialize auftritt. Also noch bevor irgendwelcher Code zu tragen kommt. Oder wie oder was :gruebel:

Gruß Harry
und allen eine "Guten Rutsch"

Hallo,

natürlich gibt es ein Leben vor Application.Inialize. Schreib eine Funktion, die prüft, ob es die DLL gibt (mit FileExists o.ä.), definiere eine globale Variable für das Ergebnis und rufe die Funktion in deiner .DPR-Datei als allererstes auf.

Das nützt natürlich nur was, wenn du die DLL dynamisch lädst und bei Nichtexistenz das garnicht erst versuchst.

Gruss Reinhard

Harry M. 31. Dez 2006 16:30

Re: Exception vor Application.Initialize
 
Sowas hatte ich bereits. Ergebnis blieb das Gleiche. Es rumpelt, noch bevor der Code druchlaufen wird.

Luckie 31. Dez 2006 16:35

Re: Exception vor Application.Initialize
 
Das wird nicht gehen. Wenn die DLL statisch in die Exe gelinkt wird, dann wird die Exception schon vom Loader ausgelöst, weil er die DLL nicht finden kann. Ist nicht sicher gestellt, dass es die DLL gibt, hilft nur noch eins, nämlich zur Laufzeit laden und die Funktionen dynamisch importieren. Sihe dazu auch das DLL Tutorial von Olli: http://www.michael-puff.de/dirindex....orte/Assarbad/

Harry M. 31. Dez 2006 16:47

Re: Exception vor Application.Initialize
 
Sowas in der Art konnte ich mit schon denken.
Dann rutsch ich mit Assarbad's Tuts in neue Jahr :mrgreen:

Reinhard Kern 31. Dez 2006 16:58

Re: Exception vor Application.Initialize
 
Zitat:

Zitat von Harry M.
Sowas in der Art konnte ich mit schon denken.
Dann rutsch ich mit Assarbad's Tuts in neue Jahr :mrgreen:

Hallo,
hättest du in meiner Antwort alle 3 Zeilen gelesen und nicht nach 2 schon aufgehört, da stand auch schon "Dll dynamisch".

Naja, war wohl doch zu lang.

Gruss Reinhard

Harry M. 31. Dez 2006 21:25

Re: Exception vor Application.Initialize
 
Lieber Reinhard Kern,
da die Av noch vor dem eigendlichen Dll-Zugriff kommt bin ich nicht sicher ob dies nun "Dynamisch" oder "Statisch" ist.

Christian Seehase 31. Dez 2006 22:12

Re: Exception vor Application.Initialize
 
Moin Harry,

wenn Du die DLL mittels:

function Funktionsname(parameter) : Result; external 'DLLNAME'

einbindest, wird sie statisch eingebunden => Das Betriebssystem versucht die DLL und die Funktionsaufruf in der DLL zu finden.
Wenn dabei eines von beiden fehlschlägt => Exception.

Zum dynamischen Einbinden brauchst Du Hier im Forum suchenLoadLibrary für die DLL und Hier im Forum suchenGetProcAddress für die Funktion.

Du müsstest also wissen können, wie die DLL eingebunden wird ;-)

Harry M. 31. Dez 2006 23:08

Re: Exception vor Application.Initialize
 
Danke für die Erklärung. Dann war es wohl statisch :mrgreen:


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:12 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