对象好象可以做返回值的吧。
我的Delphi不好,瞎说。

解决方案 »

  1.   

    可以,但是你必须自己保证内存的释放。
    例如:
    function GetStringList:tStrings;
    begin
      result:=tstringlist.create;
    end;
    调用:
    abc:=getstringlist;
    ....
    abc.free;
      

  2.   

    补充一下,不改也完全可以用。该变量其实只是
    一个对象的一个引用,是一个指针。真正的对象是通过Create创建的。
    过程返回,引用消失,但是并不意味对象也消失,只是你无
    法通过这个引用对他进行操作而已。但是还是可以通过返回的引用和其他方法或者来操作我的情况是:
    在子过程里定义一个x:Tx变量,
    x:=Tx.Create
    sList.AddObject(x.name,x)
    sList是全局的或者类成员
    以后还可以x1:= Tx(sList.Object[n])获得该对象
      

  3.   

    to vcbear 何谓“建议修改成类变量,以在父类有效的时候都有效”,请明示。谢谢
      

  4.   

    同意楼上,用对象(TObject)作为参数传递给过程时,可以返回,或是可以用指针返回,
    如果是类型的参数,要用var,out作为前缀
      

  5.   

    to saoren(qsl):能说清楚一点吗,OUT好像是在COM中才有用呀?