Moin silent,
Zitat von
silent:
das:
TEdit('Edit' + IntToStr(laufVar)).Enabled
funzt bei mir nicht, ich bekomme eine zugriffsverletzung
kann auch nicht klappen.
'Edit' + IntToStr(laufVar) ist ein String. Der normale Hugestring ist ein Pointer und mit der o.g. Konstruktion erzwingst Du einen Typecast eines Stringpointers auf einen TEdit Pointer zur Laufzeit, und das führt zur
AV, da ein String kein TEdit Objekt ist.
Verallgemeinert:
Mit
TKlassenBezeichner(WasAuchImmerFuerEinPointerHierAngegebenWird)
erzwingst Du, dass der in den Klammern stehende Pointer vom Compiler als vom Typ TKlassenBezeicher angesehen wird. Kann man machen, wenn sichergestellt ist, dass der Pointer vom Typ TKlassenBezeichner, oder eine davon abgeleitete Klasse ist.
Wichtig ist, dass der Programmierer bei dieser Konstruktion die Verantwortung dafür übernimmt, dass die Typen zusammen passen.
Machst Du es hingegen so
(WasAuchImmerFuerEinPointerHierAngegebenWird AS TKlassenBezeichner)
übernimmt der Compiler schon beim Compilieren die Typüberprüfung, und meckert wenn's nicht passt.