Autor Beitrag
freedy
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 403
Erhaltene Danke: 1

Winows 7
Delphi XE
BeitragVerfasst: Di 24.04.12 17:12 
Hallo Forum,

ich habe mal wieder ein Problem, das ich mir nicht erklären kann. In einem kleinen Projekt versuche ich, eine Benutzer- und Rechteverwaltung einzubauen. Da das Projekt auch mit zugelinkten DLLs arbeiten soll, wird der DLL das Handle der Benutzerverwaltung übergeben, um Nachrichten auszutauschen. Dazu benutze ich die Benutzerverwaltung in einem Laufzeitpackage, also als BPL, in beiden Projekten, dem Hauptprojekt und in der DLL. Das funktioniert alles sehr gut. Beim Beenden bekomme ich allerdings die Zugriffsverletzung 216, allerdings nur wenn das Laufzeitpackage auch in der DLL eingebunden wird. In dem Laufzeitpackage steht eigentlich nur eine Datei mit einer Klasse, die benötigt wird, um in der DLL und im Hauptprojekt bekannt zu sein (ansonsten werden ja trotz gleichen Namens unterschiedliche Klassen angelegt).

Der Fehler tritt sehr spät auf. Mit dem Debugger bin ich noch nicht an die richtige Stelle gekommen. Gibt es andere Möglichkeiten, dem Fehler auf die Spur zu kommen?

Ich habe ein Beispielprojekt erstellt, das den Fehler verdeutlicht. Er ist auf jeden Fall unabhängig von meinem weiteren Projekt. Der Button "Open Dialog" löst beim Beenden den Fehler aus. Wird nur der Button "Create Only" gedrückt, gibt es keinen Fehler.

Grüße
Michael
Einloggen, um Attachments anzusehen!
freedy Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 403
Erhaltene Danke: 1

Winows 7
Delphi XE
BeitragVerfasst: Mi 25.04.12 08:58 
Zwischenstand: Ich habe mich nun noch einmal durch den Debugger gequält. Leider ohne Erfolg. Auch MadExcept brachte keine Ergebnisse zutage.
Definitiv kann ich festhalten, dass der Fehler nur ausgelöst wird, wenn das Fenster aus der DLL einmal angezeigt wird und das Laufzeitpackage eingebunden ist.


Ich habe dann mal weitere Laufzeitpackages zugefügt: VCL + RTL zu beiden Projekten. Und siehe da: keine Fehler. Hm... sehr merkwürdig.


Wie kann ich denn auf diese Einbindung trotzdem verzichten?