![]() |
Package: Prozedur ausführen mal funktioniert es mal nicht
Also wie bereits in vorherigen Threads erwähnt bastel ich gerade ein Pluginsystem. Dieses Pluginsystem funktioniert grob wie folgt:
Plugins und Kern der Anwedung liegen als bpl vor - eine EXE Datei welche den Kern läd und anzeigt. Kern: * eine einfache Form mit 2 Buttons. Plugin * TPlugin ist eine selbst erstellte Klasse welche von einer anderen eigenen Klasse abgeleitet wurde TPlugin = class(TPluginClass) * exportiert die Funktion LoadPlugin(var Plugin: TPlugin); Kern wird angezeigt und beim starten die Plugins geladen, sprich die Methode LoadPlugin wird ausgeführt. Wie zu erkennen ist erhalte ich nach dem Laden des Plugins eine Variable von seiner Klasse (welche registriert wurde). Diese Klasse hat Eigenschaften wie Author, Datum etc., aber auch Funktionen wie Init(); und Exec(); Nach dem Aufruf von LoadPlugin rufe ich nun Init des Plugins auf, in welcher Prozedur die Eigenschaften wie Author etc. befüllt werden, anschließend lasse ich mir den Author via. ShowMessage() zurück geben. Dies Funktioniert alles Problem los. Das Plugin welches ich durch LoadPlugin erhalten habe lege ich in einem Array ab welches bestandteil des s.g. PluginManager's ist. Das Komische ist nur ich kann nicht im Nachhinein eine Funktion/Prozedur eines Plugins aufrufen. Sprich:
Delphi-Quellcode:
funktioniert nicht - hingegen funktioniert aber folgendes:
PluginManager.Plugin[0].Plugin.Init();
Delphi-Quellcode:
Fehlermeldung beim Aufrufen im Nachhinein:
ShowMessage( PluginManager.Plugin[0].Plugin.Author );
Zitat:
|
Re: Package: Prozedur ausführen mal funktioniert es mal nich
Kommt schon, es gibt in der DP wirklich kluge Köpfe - äußert euch doch bitte mal :D
|
Re: Package: Prozedur ausführen mal funktioniert es mal nich
Du willst kluge Köpfe in eine Datenbank Packen :mrgreen:
|
Re: Package: Prozedur ausführen mal funktioniert es mal nich
*DP! :D
|
Re: Package: Prozedur ausführen mal funktioniert es mal nich
Ist irgendjemand hier? :roll:
|
Re: Package: Prozedur ausführen mal funktioniert es mal nich
Quelltext bitte. Deine Beschreibung ist ja ganz gut. Wie es aber zu einer Zugriffsverletzung kommt, beschreibt, glaube ich, der Quelltext am besten...
|
Re: Package: Prozedur ausführen mal funktioniert es mal nich
Code folgt in Kürze komplett
|
Re: Package: Prozedur ausführen mal funktioniert es mal nich
Zitat:
Delphi-Quellcode:
procedure TeConPluginManager.LoadPlugin(DLLName: String);
{ ... } finally UnloadPackage(Module); end else { ... }
Delphi-Quellcode:
Ich kann keinen Fehler feststellen. Execute zeigt ein hübsches kleines Fenster...
procedure TeConPluginManager.LoadPlugin(DLLName: String);
{ ... } finally // UnloadPackage(Module); end else { ... } Du darfst das Modul natürlich erst dann entladen, wenn Du nichts mehr daraus benutzt. Das Aukommentieren ist daher nur die halbe Miete, es muss dafür noch der richtige Platz beim Programmbeenden gefunden werden. |
Re: Package: Prozedur ausführen mal funktioniert es mal nich
Danke, das war der Fehler :wall:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:47 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