2009/5/28 Edelson Regis de Lima <edre...@ig.com.br>:
> Olá pessoal.
>
> Não sei se é possível, mas vamos lá...
>
> Tenho uma classe principal: TMinhaClasse, que tem algumas propertys básicas.
> Eu crio outra classe TMinhaClasseHerdada = class(TMinhaClasse) e acrescento
> mais algumas propertys...
>
> Implementei uma função usando RTTI que lê qualquer tipo de objeto herdado de
> TMinhaClasse e mostra suas propriedades e respectivos valores.
> Só que estou tendo problema quando a property é do tipo TMemoryStream, pois
> utilizo a function GetPropValue, que me retorna uma Variant, e os dados
> contidos nessa property, que seria um monte de binários, me retorna alguns
> números apenas.
> Será que tem outro jeito de fazer isso?
>
> Alguem sabe como ler uma propriedade genericamente, sem saber previamente
> qual o seu tipo, e se for do tipo TMemoryStream ou TStream, que retorne o
> seu conteúdo corretamente?

Para ver o tipo da propriedade:

====
var
  VPropInfo: PPropInfo;
begin
  VPropInfo := GetPropInfo(Owner, Metadata.Name);
  if Assigned(VPropInfo) then
    VPropInfo^.PropType^.Kind // <- aqui está o tipo da propriedade
====

Para ler um objeto use GetObjectProp.

Joao Morais

Responder a