Indy TIdHashMessageDigest5 HashStringAsHex 编译时错误:未声明的标识符:'HashStringAsHex'

问题描述

使用:D7

uses SysUtils,StrUtils,IdHash,IdHashMessageDigest;

..

var
  idmd5: TIdHashMessageDigest5;
  h,v: string;
begin
  idmd5 := TIdHashMessageDigest5.Create;
  try
    h := idmd5.HashStringAsHex(v);
  finally
    idmd5.Free;
  end;

我有这段代码,它在 Delphi 7 的早期编译和运行良好,带有 Indy 的捆绑版本。将 Indy 升级到最新版本 (v10) 后,出现编译时错误

[错误] xxxx.pas(71): 未声明的标识符:'HashStringAsHex'

请帮忙!

附加:

我已经通过更改解决

h := idmd5.HashStringAsHex(v);

到:

h := idmd5.AsHex(idmd5.HashValue(v));

然而,上面的代码是在一个包中(自定义组件)。在我的主应用程序中,相同的更正代码在编译时仍会抛出 undeclared identifier

现在真的很混乱!如何在一个项目中编译相同的代码,而在另一个项目中抛出编译时错误?!

更新

我已经解决了。组件包使用旧的 Indy 库。删除该引用并更新源以包含 v10 库后,它现在可以工作了。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)