我用的是DELPHI 7.0
为什么我在执行下列语句时会出错..
var
    QryTmp:TADOQuery;
   begin
    QryTmp:=TADOQuery.Create(self);在执行TADOQuery.Create(self);会出错
但是换成TADOQuery.Create(nil)时不会出错..这是为什么..有什么区别吗?

解决方案 »

  1.   

    我都是用TADOQuery.Create(nil),帮你顶一下
      

  2.   

    Create的参数是owner, self表示当前的class,一般就是form,  作用是form释放的时候会帮你把动态定义的东西释放掉。参数为空(nil)时, 你必须自己释放控件。建议参数用nil,使用完毕后手动释放。
    至于你说的TADOQuery.Create(self)会出错而TADOQuery.Create(nil),是不是你是在线程里或无窗体单元创建的?如果是的话把self改成nil或者uses forms单元试试
      

  3.   

    我想修正一下楼上hellolongbin(一个人[散分贴一律征收20%灌水税])一下:
    --是不是你是在线程里或无窗体单元创建的?--
    在无窗体单元创建数据集时候使用Self也是不会有问题的
      

  4.   

    无窗体单元要Create(self)必须得uses forms单元
      

  5.   

    uses forms单元
    粘出那段代码看看..
      

  6.   

    TADOConnection.Create(aOwner:TComponent);aOwner为TComponent类型