Problem mit BPL-Packages
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:
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:
Und genau beim zweiten LoadPackage kracht es.
//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; 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* |
Re: Problem mit BPL-Packages
Die imho einzige saubere Methode ist die, die du schon angeführt hast. Einfach die mehrfach benutzten Dateien in viele kleine Packages aufteilen und dann importieren.
Ein schmutzige Variante ist das Umbenennen dieser Dateien, so das sie in jedem Package anders heißen. |
Re: Problem mit BPL-Packages
:?
gibt es ne möglichkeit diese packages sauber wieder raus zu schmeißen? Das mit dem weiteren Package wäre nicht ganz so optimal, da dann hier alles mögliche umgeschrieben werden müsste. Ich dachte mir, ich könnte das eine package rausschmeißen und dann das andere laden. Es ist ja nicht nötig, dass beide gleichzeitig laufen. Aber mit UnLoadPackage funktioniert das erneute laden halt einfach nicht! |
Re: Problem mit BPL-Packages
Du musst doch nicht viel umschreiben. Einfach ein Laufzeitpackage erstellen, was die doppelte Unit einbindet, und dieses Laufzeitpackage dann unter "requires" eintragen.
|
Re: Problem mit BPL-Packages
doch, weil alle Dateien wieder auf anderen aufbauen usw.
Ich weiß extrem unsauber und sch*, aber immo haben wir nicht wirklich die Zeit den Quelltext mal komplett zu überarbeiten. Also müssen wir schauen, wie wir damit zurecht kommen :( |
Re: Problem mit BPL-Packages
So, ich hab es jetzt aus einer Mischung der beiden Möglichkeiten gemacht *args*
Sprich das was ging ausgelagert, und alles andere umbenannt. Wir zeit, das wir das ganze hier mal überarbeiten *gg* |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:35 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz