Re: [delphi-br] GetPropValue retornar conteúdo do t ipo TMemoryStream
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/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/5/28 Joao Morais jcmorai...@gmail.com: VPropInfo := GetPropInfo(Owner, Metadata.Name); GetPropInfo(SeuObjeto, 'NomeDaPropriedade'); Joao Morais