Delphi CompilerVersion指令问题

Delphi 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

我有一个在Delphi5和DelphiXE2之间共享的库代码文件。我试图将匿名方法功能添加到代码文件中,但仅限于DelphiXE2项目(因为Delphi5不支持匿名方法)。看起来我应该能够使用CompilerVersion(注意:我不想把它限制在DelphiXE2,以防我们升级)

这在XE2中运行得很好,但事实证明,Delphi5不支持$IF指令。我决定用$IFDEF来包装它。这在Delphi5中运行得很好,但XE2似乎也没有定义CompilerVersion,因此没有定义AnonymousAvail

{$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常量,它不是预定义的条件。