2

在我的 Delphi 7 代码中,声明了以下过程。

procedure MyProcedure(var HintInfo: THintInfo);

将其迁移到 Delphi XE4 时,编译器会抛出以下警告:

W1000 Symbol 'THintInfo' is deprecated: 'Use Vcl.Controls.THintInfo'

我用谷歌搜索并在http://www.alphaskins.com/forum/index.php?showtopic=5005找到了以下解决方案

{$IFDEF UNICODE}
THintInfo = Controls.THintInfo;
{$ENDIF}

是正确的还是有任何有效的方法可以做到这一点。

Controls已经在我的uses.

4

1 回答 1

3

发生的事情是类型的定义已从 Forms 移至 Controls。Embarcadero 在 Forms 单元中留下了一个定义,该定义引用了 Controls 中的真实定义,并在 Forms 中将该定义标记为已弃用。

编译器警告告诉你该怎么做它说:

Use Vcl.Controls.THintInfo

现在,由于您正在导入 Controls 而不是 Vcl.Controls,因此利用您定义的单位范围名称,您需要将此符号命名为

Controls.THintInfo

就我个人而言,如果 Embarcadero 在将其移至 Controls 时刚刚从 Forms 中删除了定义,我会更喜欢它。他们不喜欢在升级时破坏编译,但是谁导入Forms而不是Controls?相反,每个人都必须面对弃用警告,并且不得不处理它。我相信 Embarcadero 选择的路径对用户的影响比简单地移动声明会产生更大的影响。

于 2013-10-17T06:26:07.237 回答