<p>Am 28.02.2014 12:33 schrieb "Joao Morais" <<a href="mailto:l@joaomorais.com.br">l@joaomorais.com.br</a>>:<br>
><br>
> Em 09/02/14 18:05, Joao Morais escreveu:<br>
><br>
>><br>
>> Hello list. I need to list all published properties declared in a class, iow, removing properties inherited from the parent.<br>
>><br>
>> Up to now I am iterating typinfo.GetPropList, starting at:<br>
>><br>
>> GetTypeData(PTypeInfo(TheClass.ClassParent.ClassInfo))^.PropCount;<br>
>><br>
>> and it works (fpc 2.6.2). TheClass will never receive TObject. Is this the right way? Will such piece of code continue working in future versions of the rtl?<br>
><br>
><br>
> Resurrecting this old message. The point is: TObject.ClassInfo is and will always be a TypeInfo pointer? If so, out of curiosity, why declare it as Pointer? What comes to mind is circular reference, layer violation, something like this.</p>

<p>Yes, that is the reason. TTypeInfo (and PTypeInfo) is declared in unit typinfo, but TObject and thus ClassInfo is declared in unit system which does not use any other unit.</p>
<p>Also it will stay like this. It would break way too much code if we'd change that.</p>
<p>Regards,<br>
Sven</p>