您的位置:首页 > 编程语言 > Delphi

delphi写windows服务程序使用unidac连接sqlserver2000时报错OLE DB error occured. Code 800401F0h

2017-07-18 10:14 411 查看
delphi写windows程序使用unidac连接sqlserver2000时报错OLE DB error occured. Code 800401F0h查资料后,搜到如下解决方法:

服务单元引入activex单元,然后在服务执行函数中加入

CoInitializeEx(NIL,COINIT_MULTITHREADED);

CoUnInitialize; 

procedure TService.ServiceExecute(Sender: TService); 

begin 

CoInitializeEx(NIL,COINIT_MULTITHREADED);

.. 

// your code 

..

CoUnInitialize; 

end;

 

另外这两天用多线程调用c#的动态库,发现在线程的执行过程里边也要做上述处理,不然会报com未初始化的错误

procedure TFindThread.Execute;

var

  lobj: TTFindImage;

  isFind: boolean;

begin

  CoInitializeEx(nil,0);

  FLog.add('线程' + inttostr(FIdx) + '开始执行');

  FLog.Add('大图:' + FBigImg);

  FLog.Add('小图:' + FLittleImg);

  lobj := TTFindImage.Create(nil);

  isFind := (lobj.DefaultInterface as IFindImage).FindPostion(FBigImg, FLittleImg, '', 0);

  if isFind then FLog.Add('线程' + inttostr(FIdx) + '定位到小图')

  else FLog.Add('线程' + inttostr(FIdx) + '未定位到小图');

  FLog.add('线程' + inttostr(FIdx) + '执行结束');

 lobj := nil;

  CoUnInitialize;

end;

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐