![]() |
Wie, wann wird eine Dll entladen
Hallo,
ich habe im Forum gesucht, aber nichts wirklich zutrefendes gefunden. in meiner DLL ist eine Form eingebunden, die Form wird erzeugt:
Code:
Die Form enthält Datenbankkomponenten die dynamisch erzeugt werden.
exports
... begin FormReport := TFormReport.Create(nil); end; Die DLL wird von einem anderem Program geladen, und beim schliessen der Anwendung kommt eine Zugriffsverletzung. Der Fehler tritt im Ereigniss OnDestroy des Formulars auf. (es wird die Form zuerst freigegeben oder was anderes läuft da verkehrt) Ich kann mir den Fehler nicht so wirklich erklären, da ich nicht so viel mit DLLs zu tun hatte. Danke im Voraus! [edit=r_kerber]Doppelpost gelöscht! Mfg, r_kerber[/edit] |
Re: Wie, wann wird eine Dll entladen
ShareMem in Programm und DLL eingebunden?
Forms in DLLs ist und bleibt Unsinn, auch wenn viele Leute es trotzdem machen. |
Re: Wie, wann wird eine Dll entladen
ShareMem habe ich in die Dll eingebunden, ich weiss nicht ob ShareMem in die Anwendung eingebunden werden soll.
Ich habe mein Problem anders umgangen, ich habe eine Procedure geschrieben:
Delphi-Quellcode:
Diese Prozedur wird im OnClose Ereignis der Anwendung aufgerufen, die Zugriffsverletzung kommt nicht mehr.
if Form <> nil then
FreeAndNil(Form); Trotzdem möchte ich wissen, wie man es besser (richtig) machen kann. |
Re: Wie, wann wird eine Dll entladen
Zitat:
Zitat:
Zitat:
|
Re: Wie, wann wird eine Dll entladen
Ein Plugin mit Oberflaeche ist von vorneherein problematisch.
Wenn dann ueber Packages, da dort die DLL Probleme abgefangen werden. Alternativ ActiveX. ShareMem muss in Programm und DLL eingebunden werden. |
Re: Wie, wann wird eine Dll entladen
Zitat:
Und Packages hatt auch diverse Nachteile (Exe wird aktualisiert, jedoch DLL's bleiben in alter Version vorhanden. Wird mit Package-Konzept nicht gehen, da vermutlich alle Teile mit gleicher Compiler-Version erstellt werden muss. Und es sollte auch möglich sein Nicht-Delphi-Programme darüber einzubinden. Zitat:
|
Re: Wie, wann wird eine Dll entladen
Zitat:
(am besten gleich mit DB anschluss) |
Re: Wie, wann wird eine Dll entladen
stimme Bernhard zu.
DLL's mit Formularen machen durchaus Sinn. Wir erstellen auch Plugins und andere Module in DLL's mit Oberfläche. Die AV beim Programmende ist auch bei uns aufgetreten, wir haben es so gelöst, daß es z.B. neben InitPlugin auch eine Funktion ExitPlugin gibt, welche das Formular in der DLL schließt. Dieses ExitPlugin wird am Programmende aufgerufen. Packages sind für mich ein komplett proprietäres Konzept und kommen daher nicht in Frage (unsere Kunden sollen eigene Plugin-DLL's mit anderen Compilern machen können), mal abgesehen von den unsäglichen Versionskonflikten. Roderich |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:58 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