GetPropValue为什么不能读取从Tobject承继的类的实例?有没有解决办法?(100分)

  • 主题发起人 主题发起人 hsgrass
  • 开始时间 开始时间
H

hsgrass

Unregistered / Unconfirmed
GUEST, unregistred user!
uses typinfo;
type
ttest1 = class(TPersistent)
private
Fhello: string;
published
property Hello: string read Fhello write Fhello;
end;
ttest2 = class(tobject)
private
Fhello: string;
published
property Hello: string read Fhello write Fhello;
end;
procedure TForm3.btn1Click(Sender: TObject);
var
t1: ttest1;
t2: ttest2;
begin
t1 := ttest1.Create;
t2 := ttest2.Create;
try
GetPropValue(t1, 'hello');
GetPropValue(t2, 'hello'); // 找不到属性
finally
t1.free;
t2.free;
end;
end;
 
跟踪看有没有升起EPropertyError异常。。
 
你的类前后使用 {$M} 指令:
{$M+}
ttest2 = class(tobject)
private
Fhello: string;
published
property Hello: string read Fhello write Fhello;
end;
{$M-}
...
以后 ttest2 和所有派生类都可以 GetPropValue 了
 
请从TComponent继承
 
從sql到access是可以的,只有從access到sql,並且有大圖片多紀錄時失敗,其他情況都沒有問題,可能是odbc內存不夠,不知道有沒有人碰到過這種情況
 
不好意思,上面的發錯地方了
 
A class cannot have published members unless it is compiled in the {$M+} state or descends from a class compiled in the {$M+} state. Most classes with published members derive from TPersistent, which is compiled in the {$M+} state, so it is seldom necessary to use the $M directive.
 
哈哈,原來這樣
 
后退
顶部