我有兴趣将一套软件从 ODAC v5 升级到 v8.2.8。
特别是一个应用程序会导致问题。此应用程序加载一组以 dll 形式实现的辅助应用程序中的一个。
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)总是失败怎么可能?
如果有人在这方面遇到困难,我将不胜感激任何信息,无论听起来多么脆弱