Am 28.02.2014 12:33 schrieb "Joao Morais" <l...@joaomorais.com.br>: > > Em 09/02/14 18:05, Joao Morais escreveu: > >> >> Hello list. I need to list all published properties declared in a class, iow, removing properties inherited from the parent. >> >> Up to now I am iterating typinfo.GetPropList, starting at: >> >> GetTypeData(PTypeInfo(TheClass.ClassParent.ClassInfo))^.PropCount; >> >> 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? > > > 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.
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. Also it will stay like this. It would break way too much code if we'd change that. Regards, Sven
_______________________________________________ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal