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

来源:互联网 发布:系统数据对接方案 编辑:程序博客网 时间:2024/05/17 03:52

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;

 

阅读全文
0 0
原创粉丝点击