首页 > 解决方案 > Delphi 10.2 中未设置编译器指令

问题描述

我的 delphi probject 中有以下单元实现。

uses
{$IFDEF Ver270} JSON, {$ELSE} DBXJSON, {$ENDIF}

在 Delphi XE4 中将实现 DBXJSON - 这很好。在 Delphi XE6 中 JSON 将被实现——这也很好。

但在 Delphi 10.2 中,将实现 DBXJSON——而不是 JSON。为什么?这是 Delphi 10.2 中的错误吗?

标签: delphi

解决方案


这不是错误,而是设计使然。每个版本都只有一个VERXXX定义。VER270仅在 XE6 和 XE6 中定义。对于版本 10.2VER320已定义。

在您的场景中,使用这样的代码要简单得多:

uses
  {$IF RTLVersion >= 27} JSON, {$ELSE} DBXJSON, {$IFEND}

另一种选择是使用标准的包含文件,例如jedi.inc. 这消除了这种条件语句的痛苦。如果你使用jedi.inc那么你可以这样编码:

uses
  {$IFDEF DELPHIXE6_UP} JSON, {$ELSE} DBXJSON, {$ENDIF}

推荐阅读