在我的Delphi 7代码中,声明了以下过程。
procedure MyProcedure(var HintInfo: THintInfo);
在将其迁移到Delphi XE4时,编译器会抛出以下警告:
W1000 Symbol 'THintInfo' is deprecated: 'Use Vcl.Controls.THintInfo'
我用Google搜索并在http://www.alphaskins.com/forum/index.php?showtopic=5005
找到了以下解决方案{$IFDEF UNICODE}
THintInfo = Controls.THintInfo;
{$ENDIF}
是对还是有任何有效的方法来做到这一点。
我的Controls
已添加uses
个单元。
答案 0 :(得分:3)
发生的事情是该类型的定义已从Forms转移到Controls。 Embarcadero在Forms单元中留下了一个定义,它引用了Controls中的真实定义,并将Forms中的定义标记为已弃用。
编译器警告告诉你该怎么做:
Use Vcl.Controls.THintInfo
现在,由于您要导入Controls而不是Vcl.Controls,利用已定义的单位范围名称,您需要将此符号命名为
Controls.THintInfo
就个人而言,如果Embarcadero将它们移动到Controls时刚刚从Forms中删除了定义,我会更喜欢它。他们不喜欢在升级时破坏编译,但是谁导入Forms而不是Controls?相反,每个人都必须面对弃用警告,而不得不处理它。我相信Embarcadero选择的路径会对用户产生更大的影响,而不仅仅是简单地移动声明。