我正在更新我们的项目,从XE7到XE8。目前,他们仍然需要使用XE7,因此需要一些条件。例如,ImageList改变了单元,所以Vcl.ImgList是XE8中的Syste.ImageList。为了使它在两个Delphi版本上都能工作,uses子句看起来如下所示:
uses
System.SysUtils, System.Classes, Vcl.Controls
{$IF CompilerVersion >= 29.0}
,System.ImageList
{$else}
,Vcl.ImgList
{$endif}
,cxGraphics;
有时效果很好。然而,德尔福经常会自动重新添加System.Imagelist单元,尽管它已经在那里了,尽管是在一个条件条件下。
uses
System.SysUtils, System.Classes, Vcl.Controls
{$IF CompilerVersion >= 29.0}
,System.ImageList
{$else}
,Vcl.ImgList
{$endif}
,cxGraphics, System.ImageList;
编译后,XE8会发出抱怨。
[dcc32 Error] dmImagesU.pas(13): E2004 Identifier redeclared: 'System.ImageList'
( a)为什么德尔菲要增加这个单位?有人知道解决办法吗?
发布于 2015-08-27 09:27:09
在这种情况下,负责向使用添加单元的“解析器”没有正确地考虑编译器指令(在引入System.Actions.pas
时已经出现了这个问题)。
我通常为旧的Delphi版本创建一个虚拟单元,这样我就不需要在使用中添加任何指令了。
因此,在您的示例中,只需创建一个空的System.ImageList.pas
,并将其放在<= XE7找到的某个位置。
https://stackoverflow.com/questions/32245375
复制相似问题