I don't know how Delphi handle it, but FPC generics without constraint allows any property/field/method access of the generic type, up to the point where it's finally specialized with concrete type. Only then the semantic is checked whether the respective identifier really exists or not. I guess If you want to share the code between the two compilers, use generic constraint with a type having Name property.