关于数据库和dll的一点小问题,在线等待,急急急!!

beilong21 2003-10-16 11:43:57
我把form封装到dll中,其中在form中使用的是adodataset连的数据库,当我在程序之中调用dll时出现‘尚未调用CoInitialize'错误,不知道怎么调用,或者时dll写的有问题,不知道怎么去解决!请各位兄弟帮忙,尽量附带程序代码!急!!!!
...全文
51 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
dickeybird888 2003-10-16
  • 打赏
  • 举报
回复
uses comobj
.....
begin
initialization
Coinitialize(nil);
......
finalization
.....
CoUninitialize;

end.
beilong21 2003-10-16
  • 打赏
  • 举报
回复
还是不行哦
47522341 2003-10-16
  • 打赏
  • 举报
回复
内部的链接字符串要用参数传递进来;

将代码写成下面这种形式应该就可以了;
if adoconnection1.connected then
adoconnection1.connected := false;
adoconnection1.conncetstring := your_connectstring;
//其中yourconnectstring是你的链接参数
beilong21 2003-10-16
  • 打赏
  • 举报
回复
to snowfog(秋风舞)你能说的详细一点吗?尽量附带一下代码,因为我时菜鸟,请你把你的代码帮忙写一下好吗?谢谢!
龙里恶龙 2003-10-16
  • 打赏
  • 举报
回复
???Ado是Com组件吗?我不知道!
龙里恶龙 2003-10-16
  • 打赏
  • 举报
回复
Dll通常是个“处理厂”,他的任务是来料加工。如果它需要其他的外部资源来协调工作,就会被看成是一个Com组件,进行组件间通讯。所以会出现你看到的错误!
不知道你程序是怎么写的,但建议你不要把Form和AdoDataset之类的组件放入。我想你的AdoDataset一定会去访问AdoDatabase吧 :)!Dll里尽量只放Function函数!我通常都是这样写的!
xxl8101 2003-10-16
  • 打赏
  • 举报
回复
不知道你在DLL中是怎么创建FORM的,.我是如下做的,可行
Function FormCreate():integer;
begin
Result:=1;
try
CoInitialize(nil);
FrmMain:=TFrmMain.Create(nil);
except
Result:=0;
end;
end;
Function FormFree():integer;
begin
Result:=1;
try
FrmMain.Free;
CoUninitialize;
except
Result:=0;
end;
end;
还有在调用时,你用了ado连接,记得把ActiveX, DB, ADODB,加进去,我想会OK的。我就是这样做的。
snowfog 2003-10-16
  • 打赏
  • 举报
回复
Ado是COM组件,所以必须在初始化时调用CoInitialize函数,退出时调用CoUninitialize。
wooden954 2003-10-16
  • 打赏
  • 举报
回复
不知道,帮你up一下啦
lw549 2003-10-16
  • 打赏
  • 举报
回复
我的dll里有
adoconnection
adoquery
quickreport
没有用上面的方法,一样没问题。
应该不是com的事。
Northwindrocker 2003-10-16
  • 打赏
  • 举报
回复
收藏哦~~~~~

5,379

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧