Die ntdll.dll ist der Kernel von Windows! Wenns da knallt, dann liegst nicht an der
DLL selbst ...
Also versuchen wir es nochmal.
1. Wie ist ModuleButtons definiert? Wenn es als Array of TModuleClass definiert ist, dann kannst du das ganze gecaste sparen. Wenn nicht, frage ich mich ernsthaft warum nicht!
2. Wo und wie wird ModuleButtons gefüllt?
3. Ist es wirklich sehr sehr sehr verwunderlich, dass du mal:
TModuleClass(Pointer(ModuleButtons[I])).ClassName
und mal
TModuleClass(Pointer(ModuleButtons[I].Tag)).ClassName
Jetzt wo ich länger drüber nachdenke, gehe ich mal stark davon aus das du überall noch das .Tag ergänzen musst