编译器指令未在Delphi 10.2中设置

Tah*_*htu 2 delphi

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

uses
{$IFDEF Ver270} JSON, {$ELSE} DBXJSON, {$ENDIF}
Run Code Online (Sandbox Code Playgroud)

在Delphi中,XE4将实现DBXJSON - 这很好.在Delphi中,XE6将实现JSON - 这也很好.

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

Dav*_*nan 8

这不是一个错误,它是设计的.每个版本都有一个VERXXX定义.VER270仅在XE6和XE6中定义.对于版本10.2 VER320已定义.

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

uses
  {$IF RTLVersion >= 27} JSON, {$ELSE} DBXJSON, {$IFEND}
Run Code Online (Sandbox Code Playgroud)

另一种选择是使用标准的包含文件jedi.inc.这会消除这些条件陈述的痛苦.如果你使用jedi.inc那么你可以像这样编码:

uses
  {$IFDEF DELPHIXE6_UP} JSON, {$ELSE} DBXJSON, {$ENDIF}
Run Code Online (Sandbox Code Playgroud)