unit Unit1;interfaceuses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, DB, ADODB, Grids, DBGrids, StdCtrls;type
  TForm1 = class(TForm)
    Button1: TButton;
    ADOConnection1: TADOConnection;
    DBGrid1: TDBGrid;
    DataSource1: TDataSource;
    ADOQuery1: TADOQuery;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;var
  Form1: TForm1;implementation{$R *.dfm}procedure conn;
begin
 form1.ADOConnection1.Connected:=true;
end;procedure TForm1.Button1Click(Sender: TObject);
var
  hThread:Thandle;//定义一个句柄
  ThreadID:DWord;
  connStr:String;
begin
  connStr:='Provider=Microsoft.Jet.OLEDB.4.0;'
            +'Data Source='+extractfilepath(application.ExeName)+'db.mdb;'
            +'Persist Security Info=False';
  ADOConnection1.ConnectionString:=connStr;
我这样写就有错误 提示"......‘尚未调用’CoInitialize......
  //创建线程,同时线程函数被调用
  hthread:=CreateThread(nil,0,@conn,nil,0,ThreadID);但我直接调用过程conn是正常的
  conn;end;end.为什么呀哪位大哥帮小弟一下吧

解决方案 »

  1.   

    定义的时候拭一下function  conn(p:pointer):longint;stdcall;
      

  2.   

    人家既然要你调用CoInitialize那就调用一下呗
    先用CoInitializeEx(NULL, COINIT_MULTITHREADED);
    用完再调CoUninitialize();
      

  3.   

    用activeX控件要调用CoInitialize初始化,最后再释放掉就ok
      

  4.   

    to livin(小米粒) 
    我将
    procedure conn;
    begin
     form1.ADOConnection1.Connected:=true;
    end;
    改为
    function  conn(p:pointer):longint;stdcall;
    begin
     form1.ADOConnection1.Connected:=true;
    end;
    结果没有什么区别
    在 hthread:=CreateThread(nil,0,@conn,nil,0,ThreadID);时还是出错to htyx(清风夜私语)
    怎么写呀在哪里调用呀to yurenjf(极限)
    我也没有activeX控件呀只有一个TAdoConnection控件??我是想 在连库时如果很慢,窗口也不会像死了似的也可以改变大小有没有什么办法呀
      

  5.   

    ado控件就是activex的在你的线程函数的开始调用CoInitializeEx(NULL, COINIT_MULTITHREADED);结束的时候调用CoUninitialize();
    就是
    procedure conn;
    begin
      CoInitializeEx(NULL, COINIT_MULTITHREADED);
      form1.ADOConnection1.Connected:=true;
      CoUninitialize();
    end;
      

  6.   

    to htyx(清风夜私语) 
    编译不过去
    [Error] Unit1.pas(32): Undeclared identifier: 'CoInitializeEx'
    [Error] Unit1.pas(32): Undeclared identifier: 'COINIT_MULTITHREADED'
    [Error] Unit1.pas(34): Undeclared identifier: 'CoUninitialize'
    [Fatal Error] Project1.dpr(5): Could not compile used unit 'Unit1.pas'
    还需哪个单元文件吗?
      

  7.   

    改为CoInitializeEx( NIL, COINIT_MULTITHREADED);可以了
     能不能告诉我 COINIT_MULTITHREADED这个参数是起什么作用的呀