Delphi CompilerVersion指令问题
我有一个在Delphi5和DelphiXE2之间共享的库代码文件。我试图将匿名方法功能添加到代码文件中,但仅限于DelphiXE2项目(因为Delphi5不支持匿名方法)。看起来我应该能够使用CompilerVersion(注意:我不想把它限制在DelphiXE2,以防我们升级) 这在XE2中运行得很好,但事实证明,Delphi5不支持$IF指令。我决定用$IFDEF来包装它。这在Delphi5中运行得很好,但XE2似乎也没有定义CompilerVersion,因此没有定义AnonymousAvailDelphi CompilerVersion指令问题,delphi,delphi-xe2,delphi-5,compiler-directives,Delphi,Delphi Xe2,Delphi 5,Compiler Directives,我有一个在Delphi5和DelphiXE2之间共享的库代码文件。我试图将匿名方法功能添加到代码文件中,但仅限于DelphiXE2项目(因为Delphi5不支持匿名方法)。看起来我应该能够使用CompilerVersion(注意:我不想把它限制在DelphiXE2,以防我们升级) 这在XE2中运行得很好,但事实证明,Delphi5不支持$IF指令。我决定用$IFDEF来包装它。这在Delphi5中运行得很好,但XE2似乎也没有定义CompilerVersion,因此没有定义AnonymousAv
{$IFDEF CompilerVersion}
{$IF CompilerVersion >= 23}
{$DEFINE AnonymousAvail}
{$IFEND}
{$ENDIF}
任何帮助都将不胜感激
注意:我无法将匿名方法代码移动到其他代码文件。请按照说明执行:
确保外部条件如图所示(并用ENDIF关闭),并且可以在内部使用compilervision和其他常量和表达式
你也可以使用
{$IF defined(BLAH)}
或者,我最喜欢的一个:
{$IF declared(AnsiString)}
等等
FWIW,我注意到链接中的示例几乎是一字不差地来自我的单位 照医生说的做: 确保外部条件如图所示(并用ENDIF关闭),并且可以在内部使用compilervision和其他常量和表达式 你也可以使用
{$IF defined(BLAH)}
或者,我最喜欢的一个:
{$IF declared(AnsiString)}
等等
FWIW,我注意到链接中的示例几乎是一字不差地来自我的单位 如果删除{$IFDEF compilervision}块,它对Delphi 5有效吗?不,这在Delphi 5中不起作用。如果删除{$IFDEF compilervision}块,它对Delphi 5有效吗?不,它在Delphi 5中不起作用5@SertacAkyuz是的,我误读了第二段。所以本质上,当我需要检查一个预定义的条件时,我是在检查一个常量是否定义了。你可以检查一个常量是否定义了,甚至可以查询它的值。CompilerVersion是一个正常的Pascal常数,它不是一个预定义的条件。@SertacAkyuz是的,我误读了第二段。所以本质上,当我需要检查一个预定义的条件时,我是在检查一个常量是否定义了。你可以检查一个常量是否定义了,甚至可以查询它的值。CompilerVersion是一个正常的Pascal常量,它不是预定义的条件。