type txx = class
private
s:string
end;
在txx类的两个成员函数txx.f1及txx.f2中对s赋值 为什么会抱错?应该怎么写?

解决方案 »

  1.   

    就是上面的呀
    type txx = class
    private
    s:string;
    end;function txx.f():string;
    begin
    s := 'dhwdhwe';//运行到这里就抱错
    result := s;
    end;
      

  2.   

    代码贴得极不完整。
    txx.f()在txx里面的声明呢?
      

  3.   

    估计不是赋值的问题,可能是你的result := s;错误吧,把类成员的变量做为返回值允许么?
      

  4.   

    可是s := 'dhwdhwe';//运行到这里就抱错 是运行时的错误
      

  5.   


    有没有声明 无所谓呀 就是为什么我的类成员 在类函数中复制会报错 不明白么?
    当然有所谓了。。你复制的是类里面的变量。不是全局变量。type txx = class
    private
    s:string;
    function f(): string;
    end;
    function txx.f():string;
    begin
    s := 'dhwdhwe';//运行到这里就抱错
    result := s;
    end;
    这样应该不会错误了。
      

  6.   

    还有了,你调用这个函数的时候。有没有构建txx啊。
      

  7.   

    slxx1982说到点子上了,估计楼主这样用的:var
      x: txx;
      a: string;
    begin
      // 没有执行 x := txx.create;
      a := x.f;
      // 可能也不会有 x.free;
    end;这是除Java、C#之外的程序员初学Delphi容易犯的错误。
      

  8.   

    是呀,可是我没有重载它 create又干了什么呢?
    x := txx.create;
    free又是干什么的?
    那一般的var 像String 为什么不用create?
      

  9.   

    上面高手说的不错,我们是面向对象编程,使用对象当然要先创建对象,使用过后当然要释放了,create是创建,free是释放,string相当于一个字符数组
      

  10.   

    面向对象编程,使用对象当然要先创建对象,使用过后当然要释放了?
    什么叫做创建对象?
    x: txx;不就是实例化?实例化的同时不调用构造函数么?为什么还要创建?对象出了作用域难道不会自己析构?
      

  11.   

    heartofautumn(烦死了X-() ( ) 信誉:100    Blog 
    面向对象编程,使用对象当然要先创建对象,使用过后当然要释放了?
    什么叫做创建对象?
    x: txx;不就是实例化?实例化的同时不调用构造函数么?为什么还要创建?对象出了作用域难道不会自己析构?
    老大..你这些意见应该找Borland公司去理论.
    你要用delphi,就得遵守 Borland定下的规则...
      

  12.   

    楼主:所以说Delphi跟C++不一样。Delphi中对象实例变量在声明时并没有初始化,所有变量事实上都是对象指针,类似于C++中 Class *p。Delphi中的对象都需要显示创建,x := txx.Create 如同C++中的 x = new txx()。C++中对象指针也是需要显示delete的,Delphi中同样。String类型是Delphi中的基本类型,不是类,所以不需要create (new)。--
    http://www.agui.googlepages.com
    mailto: agui.cn(a)gmail.com