Reputation: 3238
I have an app that works fine... Porting it to be implemented as a DLL. I have a datamodule that has my Database and TTable components on it... In Design mode, the Database is set to Active. Tables point to the database, they are set to active. I can right click on the tables, go the field editor, and see all the columns, so I know the structure/properties are set up fine....
The problem is at run time... It gives me an AV on this line...
if MyDataModule.DB1.Connected = True then
ShowMessage('Active')
else
ShowMessage('Not Active');
I have seen hints on the web that there is something special that needs to be done to use a Datamodule inside a DLL, but I am not getting anything to work.
Specific error message is:
Access Violation at address 06D4E22E in module 'DocAssistCom.dll' Read of address 0000070'
Upvotes: 0
Views: 1554
Reputation: 21640
You should verify that MyDaModule
is indeed created, then that MyDataModule.DB1
is created as well before even trying to use 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');
But they might still not be fully created and ready when you try to use them.
So, instead of spreading ShowMessage
calls around, I would rather use OutputDebugstring
and debug the DLL in the IDE to see the code path...
Note: I don't know which versions of Delphi and Windows you are working with, but be aware that TTable requires the BDE (which is quite deprecated nowadays)...
Upvotes: 4