Moin,
ich habe ein Hauptprogramm, in das verschiedenene Plugins/Module oder wie man es nennen möchte geladen werden sollen.
Mit einem
Package funktioniert das auch einigermaßen gut
Aber sobald ich ein zweites
Package laden möchte gibt er mir beim Programmstart folgenden Fehler aus:
Zitat:
Cannot load
package 'PL_S_0002'. It contains
unit 'UMPPluginInterface', which is also contained in
package 'PL_S_0001'
So weit so schlecht.
Jetzt habe ich
hier den Hinweis gelesen, die gemeinsam benötigten Dateien in ein weiteres
Package auszulagern.
Allerdings funtkioniert das bei mir nicht wirklich, da da Dateien dabei sind, die wiederum auf Dateien aus den jeweiligen Packages zugreifen müssen.
Momentan habe ich das hier:
Delphi-Quellcode:
//HKR Schnittstelle
try
if LoadPackage(productVer.SpecialPath(MPSP_PLUGIN_PATH)+'PL_S_0001.bpl') <> 0 then
begin
PL_S_0001 := GetClass('HKRSchnittstelle');
if PL_S_0001 <> nil then
begin
AObject := TComponentClass(PL_S_0001).Create(Application)
as TComponent; // create as base class, like normal
if Supports(AObject, IHKRInterface) then
IHKRObject := AObject as IHKRInterface;
if Assigned(IHKRObject) then
begin
IHKRObject.initialize(DMAbteilung.dbAbtZeos, DMSystem.dbSystemZeos, sAktBNHdz, sProgrammSprache, bAktAdmin, THKRMeinArrayType(aSprache), THKRMeinArrayType(aCalKeys));
end;
end;
end;
except;
end;
//LFV_SH Schnittstelle
try
if LoadPackage(productVer.SpecialPath(MPSP_PLUGIN_PATH)+'PL_S_0002.bpl') <> 0 then
begin
PL_S_0002 := GetClass('LFV_SHSchnittstelle');
if PL_S_0002 <> nil then
begin
AObject := TComponentClass(PL_S_0002).Create(Application)
as TComponent; // create as base class, like normal
if Supports(AObject, ILFV_SHInterface) then
ILFV_SHObject := AObject as ILFV_SHInterface;
if Assigned(ILFV_SHObject) then
begin
ILFV_SHObject.initialize(DMAbteilung.dbAbtZeos, DMSystem.dbSystemZeos, sAktBNHdz, sProgrammSprache, bAktAdmin, iAktBNID, TLFV_SHMeinArrayType(aSprache), TLFV_SHMeinArrayType(aCalKeys));
end;
end;
end;
except;
end;
Und genau beim zweiten LoadPackage kracht es.
Nun die Frage gibt es eine Möglichkeit Delphi zu sagen, dass er das trotzdem laden soll, bzw. das erste
Package wieder so rauszuschmeißen, dass das zweite geladen werden kann?
ich habe schon versucht das erste
Package mit UnloadPackage rauszuschmeißen, aber der Fehler kommt trotzdem!?
Ich hoffe ich habe mich einigermaßen verständlich ausgedrückt *g*