R_Rule=record
Name:string;
end; T_Para = class
private
FRule: R_Rule;
public
property Rule: R_Rule read FRule write FRule;
end; Para: T_Para;
... Para.Rule.Name:='abc';
这一句编译通不过,编译程序的提示为:
Left side cannot be assigned to希望指点迷津,为什么这样写就不能赋值?
Name:string;
end; T_Para = class
private
FRule: R_Rule;
public
property Rule: R_Rule read FRule write FRule;
end; Para: T_Para;
... Para.Rule.Name:='abc';
这一句编译通不过,编译程序的提示为:
Left side cannot be assigned to希望指点迷津,为什么这样写就不能赋值?
var
zzz:R_Rule;
zzz.name:='abc';
Rule:=zzz;
现在是对Name进行赋值
T_Para = class
private
public
FRule: R_Rule;
property Rule: R_Rule read FRule write FRule;
end;
Para.FRule.Name:='abc'
就可以
通过属性 Para.Rule.Name:='abc'
就不可以注意
Para.FRule.Name:='abc'
Para.Rule.Name:='abc'
的区别现在郁闷透了
如果能访问Para.Rule.name用属性有何意义,编译器先进行检查,不复类型不允许操作
function ARule: R_Rule;
begin
end;......ARule.Name := 'abc'; //这样是不行的, 也是Left side cannot be assigned to错误
如果
str:=Para.Rule.Name;
就不会出错,这说明访问不成问题,但是不能写入数据
如果把R_Rule的类型改为
R_Rule=class
public
Name:string;
end; 以上的代码就可以编译通过,8楼的说法也不对
Name:string;
end; T_Rule=class
public
Name:string;
end; T_Para = class
private
FRule: R_Rule;
FTRule:T_Rule;
public
property Rule: R_Rule read FRule write FRule;
property TRule: T_Rule read FTRule write FTRule;
end; Para: T_Para;
... Para.TRule.Name:='abc';
Para.Rule.Name:='abc';
这时候Para.TRule.Name:='abc';可以编译通过
但是Para.Rule.Name:='abc';却不能通过
编译程序的提示为:
Left side cannot be assigned to
函数返回值是记录类型的话,编译通不过。
function BRule: T_Rule;
begin
end;......BRule.Name := '123';
看看这个http://www.delphibbs.com/keylife/iblog_show.asp?xid=6094