如何在DLL用主程序的DM(100)

  • 主题发起人 主题发起人 jmlwz
  • 开始时间 开始时间
这样做比较复杂,你不如做一个公共的数据库连接dll,然后,其他dll调用此连接dll~~~
 
1>主程序通过一个DLL函数将dm转化为int传递给DLL;例如: SetDataModule( integer(DataModule1) );2>DLL中将该变量赋值给一个全局变量 procedure SetDataModule( DM:Integer ); begin globalDm := TDataModule(DM); end;3>使用dm中的变量ADOQuery1时,如下 TADOQuery( globalDm.FindComponent('ADOQuery1') )
 
我觉得只传Connection比较好,其他组件在DLL声明就行了。
 
在DLL创建DM时报错,(A component named DMalready exists),主程序也同样使用DM
 
在DataModule后面的end.前加上下面代码:initialization CoInitialize(nil); frmDataModule:= TfrmDataModule.Create(nil);finalization frmDataModule.Free; CounInITialize();
 
据说稳定性比较差。
 
不如做成BPL比较好,毕竟是delphi自己的~~
 
在DLL的入口地址中留一个ConnectionString。在主程序引用DLL时,将DM中的ADOQuery.ConnectionString赋与DLL就可以了
 
后退
顶部