var
  ADOCon1: TADOConnection;
  ADOQry1: TADOQuery; try
    {创建并建立ADO联接}
    ADOCon1 := TADOConnection.Create(self);
    ADOQry1 := TADOQuery.Create(self);
    ADOQry1.Connection := ADOCon1;
  finally
    ADOCon1.free;
    ADOQry1.free;
  end;编译时,提示:
warning:variable 'ADOCon1' might not have been initialized!
warning:variable 'ADOQry1' might not have been initialized!
提示我的这两个控件没有初始化!怎么解决?难道不用释放了?

解决方案 »

  1.   

    这是一个COM对象是应该初始化的。
      

  2.   

    Initializes a newly allocated object instance to all zeros and initializes the instance抯 virtual method table pointer.class function InitInstance(Instance: Pointer): TObject;DescriptionThere should be no reason to call InitInstance directly. InitInstance is called by NewInstance when an object is created. When overriding NewInstance, be sure to call InitInstance as the last statement.InitInstance is not virtual, so you cannot override it: Instead, initialize any data for an object in the constructor.
    兄弟,我一时找不到了。只有找了这么多。
    你看看吧,我找到,再贴出来了。
      

  3.   

    To 楼主  在创建了TADOConnection对象和TADOQuery对象后,应该对TADOConnection对象的ConnectionString属性进行初试。例如直接去读取一个UDL文件的信息,可以先申明一个TIniFile类型的变量来进行读取。完成这个初始化后,还需要把TADOQuery对象的Connections属性指向TADOConnection对象!!!!
      

  4.   

    To FrameSniper
      你说的这些我知道!只要解决我的问题,ok?
      

  5.   

    上面FrameSniper(失去的是否可以挽回!?) 
    这家伙说的是对的。
      在创建了TADOConnection对象和TADOQuery对象后,应该对TADOConnection对象的ConnectionString属性进行初试。
      

  6.   

    var
      ADOCon1: TADOConnection;
      ADOQry1: TADOQuery; try
        {创建并建立ADO联接}
        ADOCon1 := TADOConnection.Create(self);
        ADOQry1 := TADOQuery.Create(self);
        ADOCon1.ConnectionString := '……………………';//加上这句!后边的错误依然出现!
        ADOQry1.Connection := ADOCon1;
      finally
        ADOCon1.free;
        ADOQry1.free;
      end;
    warning:variable 'ADOCon1' might not have been initialized!
    warning:variable 'ADOQry1' might not have been initialized!
      

  7.   

    ADOConnection1.ConnectionString:='Provider=MSDASQL.1;Persist Security Info=False;Data Source=MineDB';
      

  8.   

    procedure TForm3.Button1Click(Sender: TObject);
    var
      ADOCon1: TADOConnection;
      ADOQry1: TADOQuery;
    begin
      try
        {创建并建立ADO联接}
        ADOCon1 := TADOConnection.Create(self);
        ADOQry1 := TADOQuery.Create(self);
        //Initialize(ADOCon1);
        //Initialize(ADOQry1);
        //InitInstance(ADOCon1);
        //InitInstance(ADOQry1);
        //ADOCon1.LoginPrompt := False;
        ADOCon1.Close;
        ADOCon1.ConnectionString := 'Provider=SQLOLEDB.1;Password=feng;Persist'+
          ' Security Info=True;User ID=sa;Initial Catalog=master;Data Source=FENG';
        ADOQry1.Connection := ADOCon1;
        //ADOCon1.Close;
        {测试SQLServer库中,family数据库是否存在}
        ADOQry1.Close;
        ADOQry1.SQL.Clear;
        ADOQry1.SQL.Text := 'IF EXISTS (SELECT * FROM sysdatabases WHERE name = ''MyServer'')'+
          '  SELECT 1 AS HAVE ELSE SELECT 0 AS HAVE ';
        ADOQry1.Open;
        if ADOQry1.FieldByName('HAVE').AsInteger=1 then
        begin
          ShowMessage('存在');
          Abort;
        end;    {创建数据库}
        ADOQry1.Close;
        ADOQry1.SQL.Clear;
        ADOQry1.SQL.Text := 'create database MyServer';
        ADOQry1.ExecSQL;    {创建表}    ADOQry1.Close;
        ADOQry1.SQL.Clear;
        ADOQry1.SQL.Text := 'create table employee '
          + '(empid varchar(20) primary key, '
          + 'empname varchar(20), '
          + 'emppwd varchar(20), '
          + 'empqx varchar(20) ) '
          + 'create table server '
          + '( empid varchar(20) primary key, '
          + 'cqdate datetime, '
          + 'uptime datetime, '
          + 'downtime datetime, '
          + 'beizhu varchar(100) )';
          ADOQry1.ExecSQL;
      finally
        ADOCon1.Free;
        ADOQry1.Free;
      end;
    end;
    真有点晕了!这个是我的代码!
    编译,如下错误:
    warning:variable 'ADOCon1' might not have been initialized!
    warning:variable 'ADOQry1' might not have been initialized!请回答问题的,在本机上测试一下!
      

  9.   

    这不是错误,是警告,不过我还是建议你最好是用TAdoCommand来创建Database或Table等等
      

  10.   

    To Wally_wu  我个人认为没有必要用TADOCommand对象,至于为什么会出现那个错误,我认为应该和楼主的代码没有任何关系,我一会洗澡完实验实验(呵呵,好几个月没有洗了,呵呵!!!!),呵呵!!!!