Re: [delphi-br] GetPropValue retornar conteúdo do t ipo TMemoryStream

2009-05-29 Por tôpico Edelson Regis de Lima
Consegui usando o GetObjectProp.

Tive que fazer assim:
MinhaStream.LoadFromStream(TMemoryStream(GetObjectProp(MeuObjetoLocal,
NomePropriedade,TMemoryStream)));

Se eu não fizer o TypeCast com o TMemoryStream não compila, porque o retorno
de GetObjectProp é um TObject.

Obrigado pela ajuda!

Abraços,

Edelson.


2009/5/29 Edelson Regis de Lima edre...@gmail.com

 Então João, eu dei uma olhada na classe TTypeKink, e ela não suporta Stream

 TTypeKind = (tkUnknown, tkInteger, tkChar, tkEnumeration, tkFloat,
 tkString, tkSet, tkClass, tkMethod, tkWChar, tkLString, tkWString,
 tkVariant, tkArray, tkRecord, tkInterface, tkInt64, tkDynArray);

 Eu até consigo acessar as minhas propriedades da maneira que voce falou,
 mas quando é Stream ele não retorna corretamente.
 Tipo, os dados que estou utilizando tem mais de 70 mil bytes, e quando
 recupero isso usando VPropInfo^.PropType^.Kind ele me retorna apenas alguns
 bytes...

 Quando é string, float, integer... está vindo direito, mas quando é Stream
 ele não consegue recuperar corretamente.

 Edelson.




 2009/5/28 Joao Morais jcmorai...@gmail.com



 2009/5/28 Joao Morais jcmorai...@gmail.com jcmoraisjr%40gmail.com:

   VPropInfo := GetPropInfo(Owner, Metadata.Name);

 GetPropInfo(SeuObjeto, 'NomeDaPropriedade');

 Joao Morais
  





[As partes desta mensagem que não continham texto foram removidas]



Re: [delphi-br] GetPropValue retornar conteúdo do t ipo TMemoryStream

2009-05-28 Por tôpico Joao Morais
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


Re: [delphi-br] GetPropValue retornar conteúdo do t ipo TMemoryStream

2009-05-28 Por tôpico Joao Morais
2009/5/28 Joao Morais jcmorai...@gmail.com:
  VPropInfo := GetPropInfo(Owner, Metadata.Name);

GetPropInfo(SeuObjeto, 'NomeDaPropriedade');

Joao Morais