加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

如何避免在Delphi中使用insert namespace

发布时间:2020-12-15 04:19:27 所属栏目:大数据 来源:网络整理
导读:我在Delphi 2007中管理了一个庞大的项目.目标是今年升级到Delphi 10.1柏林.因此,同时源代码在两个版本中编译. 如果新Delphi出现问题,我们希望将旧版本作为备份. 我在单元dmActions.pas中的问题是从TDataModule继承的单元. uses // VCL ActnList,ActnMan,Clas
我在Delphi 2007中管理了一个庞大的项目.目标是今年升级到Delphi 10.1柏林.因此,同时源代码在两个版本中编译.

如果新Delphi出现问题,我们希望将旧版本作为备份.

我在单元dmActions.pas中的问题是从TDataModule继承的单元.

uses
  // VCL
  ActnList,ActnMan,Classes,Controls,Forms,Graphics,ImgList,Menus,SysUtils,XPStyleActnCtrls,Variants,{$IFDEF BOLD_DELPHI16_OR_LATER}
  System.ImageList,System.Actions,{$ENDIF}

  BusinessClasses;

Delphi IDE无法理解我的IFDEF,因此会自动为此插入缺少的单元

uses
  // VCL
  ActnList,{$ENDIF}

  BusinessClasses,System.ImageList,System.Actions;

但这不会在柏林用这条消息编译

[dcc32 Error] dmActions.pas(36): E2004 Identifier redeclared: 'System.ImageList'
[dcc32 Error] dmActions.pas(36): E2004 Identifier redeclared: 'System.Actions'

当然,“System.ImageList,System.Actions”不在D2007中编译.
那么解决这个问题的最佳方法是什么?

解决方法

您可以在此处使用Delphi的单元别名功能 – 至少在您的Delphi 2007首先支持虚线单元名称时.这允许使用来自Delphi 10.1 Berlin的System.SysUtils这样的新单元名称,并且仍然使用Delphi 2007编译该项目.

为此,您必须将映射添加到Delphi 2007项目的单元别名中,如下所示:

System.SysUtils=SysUtils
System.Classes=Classes

对于Delphi 2007中不存在的单元,就像您在帖子中提到的单元一样,只需映射到现有单元:

System.Actions=ActnList
System.ImageList=ImgList

作为一个好处,您最终会使用不含IFDEF的使用条款.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读