nor*_*aul 2 delphi uses-clause delphi-xe7 delphi-xe8
我正在将我们的项目从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;
Run Code Online (Sandbox Code Playgroud)
有时这很好.但是,Delphi通常会自动重新添加System.Imagelist单元,即使它已经存在,尽管是有条件的,例如
uses
System.SysUtils, System.Classes, Vcl.Controls
{$IF CompilerVersion >= 29.0}
,System.ImageList
{$else}
,Vcl.ImgList
{$endif}
,cxGraphics, System.ImageList;
Run Code Online (Sandbox Code Playgroud)
编译时,XE8会抱怨.
[dcc32 Error] dmImagesU.pas(13): E2004 Identifier redeclared: 'System.ImageList'
Run Code Online (Sandbox Code Playgroud)
a)为什么Delphi添加单元?b)有人知道解决方法吗?
在这种情况下,负责为使用添加单元的"解析器"没有正确地考虑编译器指令(该问题已经在引入时出现System.Actions.pas).
我通常为较旧的Delphi版本创建一个虚拟单元,所以我不必将任何指令放入使用中.
所以在你的情况下,只需创建一个空System.ImageList.pas并将其放在某处<= XE7找到它.
| 归档时间: |
|
| 查看次数: |
821 次 |
| 最近记录: |