Delphi - 在DLL中的DataModule中使用TTable时出错

时间:2011-12-08 18:01:37

标签: delphi dll datamodule

我的应用程序工作正常... 移植它以实现为DLL。 我有一个数据模块,上面有我的数据库和TTable组件...... 在“设计”模式下,“数据库”设置为“活动”。 表指向数据库,它们设置为活动状态。 我可以右键单击表格,进入字段编辑器,查看所有列,所以我知道结构/属性设置正常....

问题出在运行时...... 它在这条线上给了我AV ...

 if MyDataModule.DB1.Connected = True then
  ShowMessage('Active')
   else 
 ShowMessage('Not Active');

我在网上看到一些提示,在DLL中使用Datamodule需要做一些特殊工作,但我没有任何工作。

具体的错误信息是:

  

模块'DocAssistCom.dll'中地址06D4E22E的访问冲突读取地址0000070'

1 个答案:

答案 0 :(得分:4)

您应该验证确实已创建MyDaModule,然后在尝试使用MyDataModule.DB1之前创建MyDataModule.DB1.Connected

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在IDE中调试DLL 来查看代码路径,而不是传播OutputDebugstring次调用...

注意: 我不知道你使用的是哪个版本的Delphi和Windows,但要注意TTable需要BDE(现在已经很不推荐了)......