ソフトウェアスイートをODACv5からv8.2.8にアップグレードすることに興味があります。
特に1つのアプリが問題を引き起こしています。このアプリケーションは、dllとして実装された一連のセカンダリアプリケーションの1つをロードします。
LibHandle := LoadLibrary(PChar(dllname));
if LibHandle <> 0 then
begin
@showForm := GetProcAddress(LibHandle,'ShowMainDllForm');
if (@showForm <> nil) then
begin
try
ShowForm(Application.Handle, @FGlobalVars, 1);
ランチャーは問題ありません。独自のデータベース接続があり、さまざまなODACユニットをかなり楽しくステップスルーできます。
ただし、dllは、カーソルを開こうとする場合を除いて、すぐに実行されます。DBAccess.pas
エラーは、から呼び出されたユニットのアサーションエラーですMemDs.pas
。私はこれをステップスルーし、アサーションの失敗が正しいことを示しました。 からAssert(FieldDesc is TCRFieldDesc)
を受信しています。TFieldDesc
MemDS.CreateFieldDefs()
私は困惑しています。一方の呼び出しメソッドが正常に機能し(ランチャーアプリ)、もう一方の呼び出しメソッド(dll)が常に失敗するのはどうしてですか?
誰かがこの分野で困難を経験したことがあれば、私はどんな情報でもいただければ幸いです、しかしそれは希薄に聞こえるかもしれません