Warum bei NativeInt ein Cast ( in Delph 11.3) notwendig ist - entzieht sich meiner Kenntnis.
Das default Items in TObjectList ist mit NativeInt als Index deklariert. Die Items Deklaration in TBauteilList überschreibt das nicht etwa, sondern wird als override Property interpretiert. Je nach Compiler und Typ des übergebenen Index wird nun die Variante mit Index oder die mit NativeInt verwendet.
Delphi-Quellcode:
LBauteil1 := LBauteilList[i]; { 1 }
LBauteil2 := LBauteilList[LBauteilList.Count-1]; { 2 }
In {1} wird ein Integer übergeben, was auf die Deklaration in TBauteilList.Items aufgelöst wird. In {2} is LBauteilList.Count aber ein NativeInt, was bei der Subtraktion erhalten bleibt. Das wird dann unter Win64 auf TObjektList.Items aufgelöst und führt zu dem
Incompatible Types Fehler.