Esto del RTTI (Runtime Type Information) existe hace muchos años, permite obtener en run-time la información de los objetos cargados en memoria.
Una de mis intenciones es conseguir serializar / deserializar como XML mediante el uso de RTTI. Deseadme suerte.
Un ejemplo rudimentario. Para obtener la lista de propiedades (published) y eventos de un Tform:
1 2 3 4 5 6 7 8 9 10 | procedure TForm1.FormCreate(Sender: TObject); var lista : TPropList; count, I : integer; begin count := GetPropList(Sender.ClassInfo, tkAny, @lista); for I := 0 to count – 1 do begin showmessage(lista[I]^.Name); end; end; |
Una desventaja que yo le veo al RTTI es que sólo puedes obtener información de las propiedades marcadas como published. Por suerte a partir de Delphi 7 existe una extensión del RTTI que compilando el código mediante la directiva $METHODINFO ON es posible obtener información de métodos y propiedades marcadas como public, en éste enlace mas información.
Mas información:
http://www.orlandobrea.com.ar/2006/02/reflection-en-delphi.html
http://delphi.about.com/od/oopindelphi/a/delphirtti.htm
http://chris.lichti.org/Lab/RTTI_Lib/RTTI_Lib.shtml
http://homepages.borland.com/jedi/jcl/