2

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

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

因为出现错误,数据模块DFM没有建好,所以不能“调整”任何设置。

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

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

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

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

任何帮助是极大的赞赏。

4

1 回答 1

2

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

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

首先将数据模块的备份副本.DFM放在安全的地方!

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

Convert.exe -1 YourDataModule.dfm

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

于 2013-01-28T22:01:12.040 回答