我有一个应用程序,工作正常…将其移植为DLL来实现。我有一个数据模块,有我的数据库和表组件在它…在"设计模式"下,数据库设置为"活动"。表指向数据库,它们被设置为活动状态。我可以右键单击表,转到字段编辑器,看到所有列,所以我知道结构/属性设置得很好....
问题是在运行时…它给出了这一行的AV…
if MyDataModule.DB1.Connected = True then
ShowMessage('Active')
else
ShowMessage('Not Active');
我在网上看到了一些提示,需要做一些特殊的事情来使用DLL内的数据模块,但我没有得到任何工作。
具体错误信息为:
模块'DocAssistCom.dll'读取地址0000070'时地址06D4E22E发生访问冲突
在尝试使用MyDataModule.DB1.Connected
之前,您应该验证MyDaModule
确实已创建,然后MyDataModule.DB1
也已创建。
if Assigned(MyDataModule) then
if Assigned(MyDataModule.DB1) then
if MyDataModule.DB1.Connected = True then
ShowMessage('Active')
else
ShowMessage('Not Active')
else
ShowMessage('MyDataModule.DB1 not assigned')
else
ShowMessage('MyDataModule not assigned');
但是当您尝试使用它们时,它们可能仍然没有完全创建和准备好。
所以,而不是传播ShowMessage
调用周围,我宁愿使用OutputDebugstring
和调试IDE中的DLL 查看代码路径…
注意:我不知道您使用的是Delphi和Windows的哪个版本,但请注意,TTable需要BDE(现在已经不赞成了)…