Hallo Experten,
folgendes, kleines Problem:
Meine Anwendung soll dynamisch verschiedene BPLs beim Start laden. Mit einer klappt das auch wunderbar. Will ich nun in einer Schleife Package für Package laden, bekomme ich schon ab dem 2. Package folgende Fehlermeldung:
"Im Projekt XXXXX.exe ist eine Exception der Klasse EPackageError mit der Meldung 'Package 'XYZ1 kann nicht geladen werden.' Es enthält die Unit 'UnitTest,'die auch im Package 'XYZ2' enthalten ist' aufgetreten."
Meine erste Vermutung war, dass es vielleicht daran liegen könnte, dass ich jedes Package auf das selbe "HModule" lade. Also habe ich mir ein Array solcher Handles gemacht. Dennoch bleibt der Fehler.
Der ist ja erstmal recht eindeutig. Nur versteh ich den Sinn dahinter nicht. Jedes meiner Packages muss die angemeckerte Unit enthalten, um die Unabhängikeit zu gewährleisten, damit eine Anwendung eben nur die BPLs reinläd und fertig. Würde ich diese Unit zum Beispiel der Anwendung mitgeben, die die BPLs läd, müsste ich das auch für alle anderen Anwendungen machen, weil sonst die Packages nicht funktionieren. Wäre doch dann sinnlos, oder? Oder anders gesagt, wenn jedes Package eine Form enthält und damit die Unit Forms braucht, würde ich ja den gleichen Fehler bekommen. Um das zu umgehen müsste die Host-Anwendung Forms enthalten, selbst wenn's nur eine Programm für die Kommandozeile ist. Ist doch Mist sowas!
Mit freundlichen Grüßen
Hirschi
PS: Mit "cyclic referencing" kann das doch auch nichts zu tun haben, weil die Packages unabhängig voneinander sind. D.h. ich verweise nirgends von einem Package auf ein anderes.
Moderiert von
Narses: Topic aus Sonstiges (Delphi) verschoben am Fr 17.07.2009 um 10:15