Hehe...weiter gehts mit meinem Problem
Ich arbeite jetzt wie vorgeschlagen mit Supports(). Beim Laden des Moduls geschieht folgendes:
Delphi-Quellcode:
//Actually load the module and initialize it
Module.MainForm := TFormClass(Module.MainFormClass).Create(Application);
if Supports(Module.Mainform, IModuleMainForm, Module.MainFormInterface) then
Module.MainFormInterface.SetProgramStyle(ProgramOptions.GetOption('ProgramStyle'));
with Module.MainForm do
begin
Align := alClient;
BorderStyle := bsNone;
Parent := Self.fMainFormParent;
Visible := False;
end; //with Module.MainForm do
Die Routine zum Freigeben sieht so aus:
Delphi-Quellcode:
function TModules.FreeModule(Module: TModuleItem): Integer;
begin
Result := ERR_NO_ERROR;
if not Module.fModuleActive then
begin
exit;
end; //if not Module.fModuleActive then
Module.MainFormInterface._Release;
FinalizePackage(Module.fModuleHandle);
UnloadPackage(Module.fModuleHandle);
end; //function TModules.FreeModule(Module: TModuleItem): Integer;
Wenn ich nun aber das Item selbst freigebe (was geschieht sobald ich die Collection freigebe), erhalte ich eine
AV beim Aufruf, in den ich leider auch nicht reindebuggen kann. FreeModule() wird vor dem Free der Collection fuer alle Elemente aufgerufen. Wenn ich die gesamte Interfacesache ausklammere, funktionierts ohne Probleme. Die _Release-Zeile habe ich eingefuegt, um der
AV entgegenzuwirken, aber das hat leider auch nichts gebracht
Kann mir (wiedermal) jemand weiterhelfen?
Greetz
alcaeus
[edit]Offene Frage[/edit]