两个类声明如下:TParent = class
end;TChild = class(TParent)
private
  FMyData: string;
public
  procedure ShowMyMsg;
  property MyData: string read FMyData write FMyData;
end;我使用时这样写的:var
  P: TParent;
  S: string;
begin
  (P as TChild).MyData;       //这句编译不过
  S := (P as TChild).MyData;  //这样就能编译过
  (P as TChild).ShowMyMsg;    //这样也可以
end;编译不过去的提示是Statement expected, but expression of type 'String' found,意识好象是需要一个方法而不是类型。
请问为什么会这样呢?如果我需要把那一句编译过去,该怎么修改呢?谢谢!分不多,只有这么多了,全部家当拿出来了。

解决方案 »

  1.   

    你的程序跟下面代码类式,编译不过procedure TForm1.Button1Click(Sender: TObject);
    var
      s: string;
    begin
      s;
    end;
    (P as TChild).MyData;      //这句编译不过
    这句根本没有意义
      

  2.   

    (P as TChild).MyData;      //这句编译不过 
    对一个变量既不读又不写,什么用都没有,写出来有什么用呢?
      

  3.   

    没意义的语句,如果一定要那就这样:(P as TChild).MyData:=(P as TChild).MyData;
      

  4.   

    (P as TChild).MyData; 相当于 S;
    一个变量能单独当一句么?
      

  5.   

     (P as TChild).MyData; 
    这仅仅相当与一个变量 你对变量没有做任何的操作
    没赋值 也没运算
    它怎么就能编译过呢 ?
      

  6.   

    MyData: string 仅仅是一个属性变量,怎么运行