大佬教程收集整理的这篇文章主要介绍了Delphi条件汇编在uses子句中,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
uses {$IF CompilerVersion >= 24}System.Actions,{$ELSE}Actnlist,{$IFEND} Windows,messages,SysUtils,Classes,Graphics,Controls,Forms,Dialogs;
但是XE7会自动添加一个System.Actions结尾来创建一个using子句,现在已经声明了System.Actions两次(见下文),并给出了一个错误消息[dcc32 Error] MyForm.pas(10):E2004标识符重新声明: System.Actions’.为什么XE7不接受条件指令内的单位?
uses {$IF CompilerVersion >= 24}System.Actions,Dialogs,System.Actions; // <- automatically added
您可以使用单元别名(请参阅David Heffernan的答案),但需要注意的是,如果为IDE希望添加的单元创建别名,则IDE仍将添加对所需单元的引用,因为它不能识别识别所需单位的别名.系统单元的别名将避免这一点,因为它已被每个单元(隐含地)使用.
另一种替代方法是从用户列表中删除所有这些条件,并根据需要创建占位符单元,以便您希望在项目中使用的不同编译器可以由每个IDE坚持的列表组合的单个用户列表来满足是必需的(IDE不会从使用列表中删除未使用的单元,通常是投诉,但在这种情况下实际上有助于解决您的问题).
在这种情况下,在您的Delphi 2010项目中创建一个空的动作单元:
unit Actions; interface implementation end.
您当然需要确保本机不在项目的XE7版本的项目路径中.
实现此目的的一种方法是确保空的Actions.pas单元没有在DPR使用列表中明确列出,而是放置在项目源的子文件夹(例如“占位符”)中.然后,您可以将此子文件夹添加到Delphi 2010版本的项目搜索路径中,但不会将其添加到XE7版本中:
\Project Folder project2010.dpr project2010.dproj projectXE7.dpr projectXE7.dproj \placeholders Actions.pas
如果您发现每个不@R_197_11197@都需要占位符,那么您将需要单独的占位符文件夹.您可以创建其他版本的子文件夹,例如:
\placeholders \2010 Actions.pas \XE7 D2010UnitNotPresenTinXE7.pas
从创建自动/自我记录组织的角度来看,这种结构可能是可取的.
请注意,这仅适用于在Forms(或帧等)的接口部分的uses子句中处理单元引用.在非可视化单元或实现部分中,IDE不会干扰,因此条件编译指令应该不存在任何问题.
以上是大佬教程为你收集整理的Delphi条件汇编在uses子句中全部内容,希望文章能够帮你解决Delphi条件汇编在uses子句中所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。