0

正常に動作するアプリがあります... DLL として実装するように移植しています。データベースと TTable コンポーネントを含むデータモジュールがあります... デザイン モードでは、データベースはアクティブに設定されています。テーブルはデータベースを指し、アクティブに設定されます。テーブルを右クリックしてフィールド エディターに移動し、すべての列を表示できるので、構造/プロパティが適切に設定されていることがわかります....

問題は実行時です...この行にAVが表示されます...

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

DLL 内でデータモジュールを使用するために何か特別なことを行う必要があるというヒントを Web で見ましたが、何も機能しません。

具体的なエラー メッセージは次のとおりです。

モジュール 'DocAssistCom.dll' のアドレス 06D4E22E でのアクセス違反 アドレス 0000070 の読み取り

4

1 に答える 1

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 が必要であることに注意してください (最近では非推奨になっています)...

于 2011-12-08T18:54:38.187 に答える