使用rtti时,为什么我自己的类, published的属性却不能用getstrprop 得到值,困惑(200分)

  • 主题发起人 主题发起人 alei_nb
  • 开始时间 开始时间
A

alei_nb

Unregistered / Unconfirmed
GUEST, unregistred user!
TTestObj = Class (TObject)
private
FTestContent : String ;
fint : Integer ;
published
property TestContent : String Read FTestContent Write FTestContent ;
property TestInt : Integer Read fint write fint ;
end


var
vTestObj : TTestObj ;

implementation

procedure TForm1.Button4Click(Sender: TObject);
var
ts : String ;
i : Integer ;
begin
vTestObj.TestContent := 'testcontent';
ts := GetStrProp(vtestobj,'TestContent') ;
showmessage(ts) ;
end;
 
对象需要继承 TPersistent 或以后的才有 RTTI 信息。
TTestObj = Class(TPersistent)
或者是使用编译指令 {$M+}
例如:
{$M+}
type
TTestObj = Class(TObject)
private
FTestContent : String ;
fint : Integer ;
published
property TestContent : String Read FTestContent Write FTestContent ;
property TestInt : Integer Read fint write fint ;
end ;
{$M-}

另外,对象需要创建后才能保存信息,所以读取的语句是:
procedure TForm1.Button1Click(Sender: TObject);
var
ts : String ;
begin
vTestObj := TTestObj.Create;
try
vTestObj.TestContent := 'testcontent';
ts := GetStrProp(vTestObj,'TestContent') ;
showmessage(ts) ;
finally
vTestObj.Free
end;
 
www.source520.com 站长必进 2万源代码电子经典书狂下载
 
后退
顶部