Delphi CompilerVersion 指令问题
Delphi CompilerVersion directive issues
我有一个在 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}
如有任何帮助,我们将不胜感激。
注意:我不能将匿名方法代码移动到不同的代码文件。
按照 documentation 所说的去做:
{$IFDEF ConditionalExpressions}
{$IF CompilerVersion >= 23.0}
{$DEFINE AnonymousAvailable}
{$IFEND}
{$ENDIF}
确保外部条件如图所示(并以 ENDIF 结束)并且您可以在内部使用 CompilerVersion 和其他常量和表达式。
您也可以使用
{$IF defined(BLAH)}
或者,我的最爱之一:
{$IF declared(AnsiString)}
等...
FWIW,我注意到 link 中的示例几乎一字不差地来自我的 Console.pas 单元。
我有一个在 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}
如有任何帮助,我们将不胜感激。
注意:我不能将匿名方法代码移动到不同的代码文件。
按照 documentation 所说的去做:
{$IFDEF ConditionalExpressions}
{$IF CompilerVersion >= 23.0}
{$DEFINE AnonymousAvailable}
{$IFEND}
{$ENDIF}
确保外部条件如图所示(并以 ENDIF 结束)并且您可以在内部使用 CompilerVersion 和其他常量和表达式。
您也可以使用
{$IF defined(BLAH)}
或者,我的最爱之一:
{$IF declared(AnsiString)}
等...
FWIW,我注意到 link 中的示例几乎一字不差地来自我的 Console.pas 单元。