Ich habe deinen Source 1 zu 1 nun mal in Delphi 5 und Delphi 3 getestet. Jeweils ohne und mit Packages. Es funktionierte immer egal ob ich TBorderIcon oder TBorderIcons benutze.
Es sieht wohl so aus das du
Unit Forms.pas garnicht in deinem Projekt benutzt und der Compiler somit auch nicht den Typ TBorderIcon einlinkt.
Obige Methode kann ja nur RTTIs finden die auch im Program verwendet werden !!
Am besten kompilierst du dein Projekt mal mit Packages so das
Package VCL30.dpl auch eingelinkt wird. Dann müsste deine obige Funktion auch diese
RTTI finden da nun der Compiler/Linker diesen Typ nicht mehr aus dem VCL30
Package "weg-linken" kann
Mit GetModuleFindName(FindHInstance(PTypeInfo), xzy); kannst du dann sehen das diese
RTTI im Codesegment des Packages VCL30 abgelegt ist.
Gruß Hagen
[edit]
Und nochwas !! Kann es sein das du diese Funktion in eine
DLL augelagert hast ? Das kann dann nicht funktioinieren da dann nur die
RTTI innerhalb dieser
DLL iteriert wird. Du müsstest das Modul-
Handle -> HInstance des Prozesses dazu haben und an EnumTypeInfo() übergeben. Bei einer
DLL die Packages benutzt und die Hauptanwendung benutzt die gleichen Packages wird EnumModules() innerhab der
DLL auf die gleichen globalen Datenstrukturen zugreifen wie der Hauptprozess. Dh. in diesem Moment hat diese
DLL auch Zugriff auf die Liste aller geladenen Module im Prozess und kann somit auch alle RTTIs finden.
Falls du NICHT mit Packages arbeiten möchtest aber denoch eine
DLL benutzen willst so kann ich dir einen weiteren Trick geben der denoch alle Module des Prozesses itererien kann.
[/edit]