R redw Unregistered / Unconfirmed GUEST, unregistred user! 2004-02-24 #1 在dll中的窗体怎样使用ado及其组件?请给个例子。谢谢!
R redw Unregistered / Unconfirmed GUEST, unregistred user! 2004-02-24 #3 好像不可以,调用老是出错,dll中的窗体包括<br> 一个adoquery组件,调试总是出现错误
R RJU Unregistered / Unconfirmed GUEST, unregistred user! 2004-02-24 #4 你试试在你的DLL主窗口中增加一个TDATABASE控件,它不需要做任何操作。<br>
A apw Unregistered / Unconfirmed GUEST, unregistred user! 2004-02-24 #10 窗体里自己采用TAdoConnection和TAdoDataset/TAdoQuery/TAdoConnand等构成ADO数据库联接与查询,与EXE中作法完全一样。<br><br>所不同的是:要在动态库加载时调用:CoInitialize(nil); // 手动初始化COM.<br> 在动态库卸载时调用:CoUninitialize; // 释放COM占用的资源<br>由于ADO是以COM接口形式与应用通讯的,应用程序必须要初始化,以申请资源。<br>在exe中,VCL自动进行此类工作,但DLL未做,因而在DLL中使用ADO(以及COM)时要初始化。
窗体里自己采用TAdoConnection和TAdoDataset/TAdoQuery/TAdoConnand等构成ADO数据库联接与查询,与EXE中作法完全一样。<br><br>所不同的是:要在动态库加载时调用:CoInitialize(nil); // 手动初始化COM.<br> 在动态库卸载时调用:CoUninitialize; // 释放COM占用的资源<br>由于ADO是以COM接口形式与应用通讯的,应用程序必须要初始化,以申请资源。<br>在exe中,VCL自动进行此类工作,但DLL未做,因而在DLL中使用ADO(以及COM)时要初始化。
R RJU Unregistered / Unconfirmed GUEST, unregistred user! 2004-02-24 #11 第一你要创建TAdoConnection。第二个问题,你的Com库没有初始化。所以麻烦你在你的代码的实现里包含<br>ActiveX单元,以便使CoInitilizeEx函数被正确调用了。是在你的exe程序中,不是DLL中,ActiveX单元在<br>DLL中不会调用CoInitilizeEx,这是borland的实现策略,初始化COM库是exe的责任。<br>总之这个问题有人说算是DELPHI的一个BUG。你用CoInitilizeEx为关键字搜索大幅翁,将得到无数可怕的有益答案。
第一你要创建TAdoConnection。第二个问题,你的Com库没有初始化。所以麻烦你在你的代码的实现里包含<br>ActiveX单元,以便使CoInitilizeEx函数被正确调用了。是在你的exe程序中,不是DLL中,ActiveX单元在<br>DLL中不会调用CoInitilizeEx,这是borland的实现策略,初始化COM库是exe的责任。<br>总之这个问题有人说算是DELPHI的一个BUG。你用CoInitilizeEx为关键字搜索大幅翁,将得到无数可怕的有益答案。
Y ysai Unregistered / Unconfirmed GUEST, unregistred user! 2004-02-24 #12 library XXXXXXXXXXX;<br><br>uses<br> SysUtils,<br> ActiveX,<br> Classes........;<br><br>{$R *.res}<br><br>exports<br> XXXXXXXXXX;<br><br>begin<br> CoInitialize(nil);//这里<br>end.
library XXXXXXXXXXX;<br><br>uses<br> SysUtils,<br> ActiveX,<br> Classes........;<br><br>{$R *.res}<br><br>exports<br> XXXXXXXXXX;<br><br>begin<br> CoInitialize(nil);//这里<br>end.
A aRichMan Unregistered / Unconfirmed GUEST, unregistred user! 2004-02-24 #13 不用加CoInitialize(nil);<br>只要use activex就可以了。