关于数据库和dll的一点小问题,在线等待,急急急!! 我把form封装到dll中,其中在form中使用的是adodataset连的数据库,当我在程序之中调用dll时出现‘尚未调用CoInitialize'错误,不知道怎么调用,或者时dll写的有问题,不知道怎么去解决!请各位兄弟帮忙,尽量附带程序代码!急!!!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 Ado是COM组件,所以必须在初始化时调用CoInitialize函数,退出时调用CoUninitialize。 不知道你在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的。我就是这样做的。 Dll通常是个“处理厂”,他的任务是来料加工。如果它需要其他的外部资源来协调工作,就会被看成是一个Com组件,进行组件间通讯。所以会出现你看到的错误!不知道你程序是怎么写的,但建议你不要把Form和AdoDataset之类的组件放入。我想你的AdoDataset一定会去访问AdoDatabase吧 :)!Dll里尽量只放Function函数!我通常都是这样写的! ???Ado是Com组件吗?我不知道! to snowfog(秋风舞)你能说的详细一点吗?尽量附带一下代码,因为我时菜鸟,请你把你的代码帮忙写一下好吗?谢谢! 内部的链接字符串要用参数传递进来;将代码写成下面这种形式应该就可以了;if adoconnection1.connected then adoconnection1.connected := false;adoconnection1.conncetstring := your_connectstring; //其中yourconnectstring是你的链接参数 uses comobj.....begininitialization Coinitialize(nil);......finalization..... CoUninitialize;end. 我的dll里有adoconnectionadoqueryquickreport没有用上面的方法,一样没问题。应该不是com的事。 'TAble is busy'是怎么回事? 怎样取得GRID中输入后的新值和输入之前的旧值 提高delphi+Word写入数据速度实例 哪位有数据导出到excel例子,贴出来看看!! 怎样用API检测本机是否连上互联网?? 80分求教: 下面代码中IE中的参数是如何传递给控件的? listview的问题! 请给我讲一下临时表的有关知识,哪里有这方面的电子书下载? 如何使用程序设置win2000中的用户名跟密码? 如何在QuickRep的QRExpr公式中實現手動折行,我試了一下用#13,但沒法解決問題,請教高手了。 关于帮助! delphi程序怎样实现oracle数据库的完全备份啊?
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的。我就是这样做的。
不知道你程序是怎么写的,但建议你不要把Form和AdoDataset之类的组件放入。我想你的AdoDataset一定会去访问AdoDatabase吧 :)!Dll里尽量只放Function函数!我通常都是这样写的!
if adoconnection1.connected then
adoconnection1.connected := false;
adoconnection1.conncetstring := your_connectstring;
//其中yourconnectstring是你的链接参数
.....
begin
initialization
Coinitialize(nil);
......
finalization
.....
CoUninitialize;end.
adoconnection
adoquery
quickreport
没有用上面的方法,一样没问题。
应该不是com的事。