我在a.pas里定义了一个类a,在b.pas里uses a,然后在b.pas 里有一个函数如下
func
 var c:a;
begin
 c:=a.create
....
end;
运行时居然报错,好像是a并没有创建成功,不知问题出在哪
另外
c.reate 和 c:=a.create 这两个语法有什么区别呢?

解决方案 »

  1.   


    func 
     var c:a; 
    begin 
     c:=a.create(nil); 
    .... 
    end; 
    运行时居然报错,好像是a并没有创建成功,不知问题出在哪 
    另外 
    c.reate 和 c:=a.create 这两个语法有什么区别呢?
    上面都不是正确的语法!
    c.reate?这是什么!?没有这样的写法。而且还拼写错误。
    c:=a.create;这样写是错误的。因为创建一个动态组件,DELPHI都要求要提供一个组件管理者,管理
    动态组件的内存
    nil:没有管理者。此时,动态组件的内存就得由程序员来管理了。一般地这样使用是安全的:
    var
      sthObj:TObject;
    begin
    sthobj:=tobject.create(nil);
    try
      ....
    finally
      sthobj.free;//回收内存
    end;end;