Zitat:
In den DesigntimePackages (dcl*.bpl) sind natürlich keine Komponenten definiert.
Die sind ja in den RuntimePackages. Die benötigten Runtimepackages bekomme ich ja mit meiner Methode raus, ich muss also alle RuntimePackages durchlaufen um "doppelte" Komponenten zu finden.
Richtig, mal abgesehen von den nötigen Designtime Komponenten wie Property Editoren usw. Diese benötigen aber immer auch die Funktionen der
IDE oder genauer gesagt der ominösen Proxies.dcu
Die für dich relevanten Klassen sollten alle in Runtime Packages enthalten sein, aber das ist eben bei so manchen Libraries nicht der Fall. Die Methode mit dem Finden doppelter Komponten steckt in ähnlicher Form schon un der Funktion LoadPackage() drinnen. Diese benutzt aber nicht die Komponenten sondern die
UNIT Listen die in der Resourcen der Packages eingelinkt werden. Vorteil dabei ist das man beim Zugriff auf solche Packages um diese Resource zu laden diese
DLL nicht komplett laden braucht. Sprich man lädt sie nur als Resourcen-
DLL, lädt die
UNIT-Resource, und vergleicht deren Inhalt mit den UNITs der anderen Packages. In einem Projekt ist ein
UNIT-Name packagebezogen
immer eineindeutig. Eventuell könnte dies deine Überprüfung enorm erleichtern. Schau dir dazu mal den Source von
SysUtils.CheckForDuplicateUnits().InternalUnitChec k() genauer an.
Ich habe aber noch nicht ganz den Sinn der Übung verstanden, wie ihr eure Projekte verwaltet, ist aber auch nicht so wichtig.
Gruß hagen