1

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

{$IF CompilerVersion >= 23}
  {$DEFINE AnonymousAvail}
{$IFEND}

这在 XE2 中运行良好,但事实证明,Delphi 5 不支持 $IF 指令。我决定将它包装在 $IFDEF 中。这在 Delphi 5 中运行良好,但 XE2 似乎也没有定义 CompilerVersion,所以没有定义 AnonymousAvail。

{$IFDEF CompilerVersion}
  {$IF CompilerVersion >= 23}
    {$DEFINE AnonymousAvail}
  {$IFEND}
{$ENDIF}

任何帮助,将不胜感激。

注意:我无法将匿名方法代码移动到不同的代码文件。

4

1 回答 1

8

文档所说的:

{$IFDEF ConditionalExpressions}
  {$IF CompilerVersion >= 23.0}
    {$DEFINE AnonymousAvailable}
  {$IFEND}
{$ENDIF}

确保外部条件如图所示(并以 ENDIF 结束),并且您可以在内部使用 CompilerVersion 和其他常量和表达式。

你也可以使用

{$IF defined(BLAH)}

或者,我的最爱之一:

{$IF declared(AnsiString)}

ETC...


FWIW,我注意到链接中的示例几乎一字不差地来自我的Console.pas单元。

于 2015-02-09T02:12:49.497 回答