Посмотрите на предупреждения вашего компилятора.Когда я строю это, я вижу:
[DCC Warning] ListAttrs.dpr(15): W1025 Unsupported language feature: 'custom attribute'
[DCC Warning] ListAttrs.dpr(17): W1025 Unsupported language feature: 'custom attribute'
[DCC Warning] ListAttrs.dpr(18): W1025 Unsupported language feature: 'custom attribute'
Это связано с исторической причудой.Атрибуты, поддерживаемые компилятором Delphi для .NET, и они широко используются в VCL для различных вещей .NET.Компилятор Delphi для Win32 должен был иметь возможность их читать и игнорировать.
Затем вышел Delphi 2010, и Delphi Win32 неожиданно поддержал атрибуты.Но все эти атрибуты .NET не существовали в Delphi.Вместо того, чтобы искоренить их все, они заставили компилятор просто выдать предупреждение, а затем проигнорировать их.(Кроме того, мне кажется, я слышал, как кто-то из Emb. Сказал, что Delphi для .NET по-прежнему используется внутри компании по любой причине.)
В качестве побочного эффекта вполне допустимо использовать атрибут, который на самом делесуществуют в ваших классах.Он будет просто проигнорирован компилятором, и RTTI для него не будет сгенерирован.