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希望指点迷津,为什么这样写就不能赋值?

解决方案 »

  1.   

    应该这样写
    var
      zzz:R_Rule;
    zzz.name:='abc';
    Rule:=zzz;
      

  2.   

    Rule是R_Rule类型,只能付给R_Rule类型的数值
      

  3.   

    Para.Rule.Name
    现在是对Name进行赋值
      

  4.   

    Para.FRule.Name:='abc'; 
      

  5.   

    2,3楼的回答不正确,我试过,如果将FRule移到 public部分,如下所示
      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'
    的区别现在郁闷透了
      

  6.   

     Para.Rule的属性是R_Rule型的,只能付给R_Rule型。
    如果能访问Para.Rule.name用属性有何意义,编译器先进行检查,不复类型不允许操作
      

  7.   

    属性的读写应该看成都是由函数完成的, 所以不支持楼主的这种写法。来一段类似的代码:
    function ARule: R_Rule;
    begin
    end;......ARule.Name := 'abc';  //这样是不行的, 也是Left side cannot be assigned to错误
      

  8.   

    回7楼:
    如果
    str:=Para.Rule.Name;
    就不会出错,这说明访问不成问题,但是不能写入数据
      

  9.   

    回8楼:
    如果把R_Rule的类型改为
      R_Rule=class
      public
        Name:string; 
      end; 以上的代码就可以编译通过,8楼的说法也不对
      

  10.   

    为了说明问题,我修改一下,重新贴出  R_Rule=record
        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
      

  11.   

    函数返回值是个类的话,编译可以通过的。
    函数返回值是记录类型的话,编译通不过。
    function BRule: T_Rule;
    begin
    end;......BRule.Name := '123';
      

  12.   

    讨论这个没什么意义, 就当是个bug
    看看这个http://www.delphibbs.com/keylife/iblog_show.asp?xid=6094