我的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中的错误吗?
这不是一个错误,它是设计的.每个版本都有一个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)