to softdog:
pModule^.PSetOldApplication[red]并非一个空指针[/red],你可以在uDllCommon.pas
单元的SetOldApplication函数实现部分加上一句:
Application.MessageBox('Will set the Application=OldApp', '', 0);
试试,可以正确显示以上消息的,如果只是在IDE环境中查看pModule^.PSetOldApplication
的值,当然是看不到,但你应该看得到[red]pModule^[/red]变量的值,其中的PSetOldApplication
值并非空,如果是空的话,在TLoadModule.Delete函数内部就应该出错了,可是为何调用完了
Delete方法后才出错?
to 逍遥泿子:
你可以下载看一下我上面给出的例子,其中对接口的定义是这样的:
{定义动态载入的DLL模块接口函数}
TLoadModuleForm = function (App:TApplication;PFormFreeCallBack
ointer;
vConnect: TAdoConnection=nil):TForm;stdcall;
在DLL模块内部也是提供一个同以上声明一样的一个函数并导出让主程序调用,DLL内部
所有建立的窗口如果要用到ADO连接的话,就传上面的连接传给子窗口。
你先看看吧,很简单的,相信你能搞定![
]