> TID=class
> private
> froot: string;
> Fextension: string;
> published
> public
> property root:string read froot write froot;
> property extension:string read Fextension write fextension;
> end;
>
> TWSMessage=class
> private
> FID: TID;
> published
> public
> property ID:TID read FID write FID;
> end;
asagidaki sekilde deger atayabilirsin ama burda id degiskeninin tipini
onceden bilmen gerekiyor.
isini gorur mu emin degilim.
senin dedigin tarzda da deger atanabiliyordur belki ama su an icin nasil
yapilabilecegi konusunda kesin bir fikrim yok lakin
pro1.PropertyType.ToString satiri ile calisma zamaninda ilgili propertynin
sinifini ogrenebiliyorsun. belki bunun da bir faydasi olabilir.
Kod: Tümünü seç
procedure TForm5.Button1Click(Sender: TObject);
var
msg:TWSMessage;
tip1,tip2:TRttiType;
pro1,pro2:TRttiProperty;
ctx:TRttiContext;
id:TID;
begin
msg:=TWSMessage.Create;
ctx:=TRttiContext.Create;
tip1:=ctx.GetType(msg.ClassType);
pro1:=tip1.GetProperty('id');
// ShowMessage(pro1.PropertyType.ToString);
id :=TID.Create;
id.root :='deneme';
pro1.SetValue(msg,id);
//tip2:=ctx.GetType(pro1.ClassType);//bu kod çalışmıyor
//pro2:=tip2.GetProperty('root'); //bu kod çalışmıyor
ShowMessage(msg.ID.root);
end;