首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >停止Delphi自动添加错误的单元

停止Delphi自动添加错误的单元
EN

Stack Overflow用户
提问于 2015-08-27 09:19:37
回答 1查看 1.1K关注 0票数 2

我正在更新我们的项目,从XE7到XE8。目前,他们仍然需要使用XE7,因此需要一些条件。例如,ImageList改变了单元,所以Vcl.ImgList是XE8中的Syste.ImageList。为了使它在两个Delphi版本上都能工作,uses子句看起来如下所示:

代码语言:javascript
运行
复制
uses
  System.SysUtils, System.Classes, Vcl.Controls
  {$IF CompilerVersion >= 29.0}
  ,System.ImageList
  {$else}
  ,Vcl.ImgList
  {$endif}

  ,cxGraphics;

有时效果很好。然而,德尔福经常会自动重新添加System.Imagelist单元,尽管它已经在那里了,尽管是在一个条件条件下。

代码语言:javascript
运行
复制
uses
  System.SysUtils, System.Classes, Vcl.Controls
  {$IF CompilerVersion >= 29.0}
  ,System.ImageList
  {$else}
  ,Vcl.ImgList
  {$endif}

  ,cxGraphics, System.ImageList;

编译后,XE8会发出抱怨。

代码语言:javascript
运行
复制
[dcc32 Error] dmImagesU.pas(13): E2004 Identifier redeclared: 'System.ImageList'

( a)为什么德尔菲要增加这个单位?有人知道解决办法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-27 09:27:09

在这种情况下,负责向使用添加单元的“解析器”没有正确地考虑编译器指令(在引入System.Actions.pas时已经出现了这个问题)。

我通常为旧的Delphi版本创建一个虚拟单元,这样我就不需要在使用中添加任何指令了。

因此,在您的示例中,只需创建一个空的System.ImageList.pas,并将其放在<= XE7找到的某个位置。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32245375

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档