【问题标题】:Error 5018 handle not recognized by Advantage in Delphi ProjectDelphi Project 中的 Advantage 无法识别错误 5018 句柄
【发布时间】:2013-01-28 19:11:37
【问题描述】:

我有一个 delphi 项目,不知何故已损坏。我升级到 Advantage 11.1 组件(使用 XE),现在打开项目时收到以下错误消息:

acctTbl:错误 5018:给定的句柄未被识别 优势。验证指定的句柄是否打开/活动。给定的句柄 未被识别为有效的 Advantage 客户端引擎

因为报错,数据模块DFM没有建好,无法“调整”任何设置。

acctTbl是DFM中的第一个表,所以后面的可能会出现错误,但我不知道。

我们没有使用服务器,只是“本地服务器”。

我已尝试返回到组件的版本 10,但错误仍然存​​在。

我还尝试删除所有项目目标代码,只打开 PAS 和 DFM 文件(通过从 SVN 恢复)。

非常感谢任何帮助。

【问题讨论】:

    标签: delphi advantage-database-server


    【解决方案1】:

    您可以在文本编辑器(如记事本)中打开.dfm,并将AdsConnection.Connected 属性更改为false,并将任何AdsTableADSQuery 组件的Active 标志更改为false以及。 (我建议先关闭 IDE,以确保它不会缓存引用。)这至少可以让您打开项目并进行所需的任何更改以使用新版本的 ADS 进行编译。

    如果该文件已通过 XE 之前的许多旧版本的 Delphi 进行了更新,那么您仍有可能拥有二进制格式的 .dfm 文件(这意味着当您打开 @ 时,您会在记事本中看到各种奇怪的符号987654329@ 文件)。如果是这种情况,Delphi 包含一个转换实用程序(convert.exe,可在您的 $(DELPHI)\Bin 文件夹中找到),您可以使用以下步骤将其转换为文本格式,然后进行更改(无需将其转换回after - 默认是在创建新表单时创建文本.dfm 文件,Delphi 很好地使用它们作为文本)。

    首先在安全的地方备份您的数据模块的.DFM

    制作备份副本后,在项目文件夹中打开命令窗口,然后运行

    Convert.exe -1 YourDataModule.dfm
    

    命令说要就地转换 (-i),这意味着现有二进制文件 .dfm 被新文本 .dfm 覆盖(这也是我强调 首先制作备份副本的原因)。如果不想覆盖,可以省略-i开关,它会在文件夹中创建一个YourDataModule.txt文件;然后您可以手动将YourDataModule.dfm 重命名为其他名称,然后将YourDataModule.txt 重命名为YourDataModule.dfm

    【讨论】:

    • 感谢您的帮助。我对 DFM 进行了建议的更改,并收到了相同的错误错误消息。我们所有的 DFM 都在文本中。 “AdsConnection.Connected”行不存在,所以我添加了它。我尝试了有无添加的行。所有 AdsTable 活动标志都更改为 false。
    • 那么你有一些东西打开了一个不在数据模块中的 ADS 连接或表。 ADS 仅使用连接句柄来打开连接或表或查询。在您的项目中搜索其他 TADS 组件;某事试图打开 ADS 连接或数据字典,您需要找到它。 :-) 您还可以检查数据模块的 .pas 文件中的初始化部分中可能打开连接的任何内容。
    • 再次感谢您的回复,但我仍然收到相同的错误消息。我卸载了 11,删除了所有 10 和 11 文件,重新安装了 11 并检查了 IDE 中的搜索路径,但仍然出现错误。非常感谢您的帮助。
    • 您最初说您的项目 started 在您升级到 ADS v11 时显示了问题,这意味着您应该恢复到 v10(最后一个工作版本)。
    • 我卸载了11版,重新安装了10版,报错没有区别。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-29
    相关资源
    最近更新 更多