2

我们对 Datasnap RESTfull 有一个问题,它似乎在 10.3 Rio 和 10.2 Tokyo(以及以下所有版本)之间关于 Datasnap RESTfull 功能实现不兼容。

问题:

我们有一台服务器,使用 10.2 构建,目前正在运行并为大量用户提供服务。如果我们用 Delphi 10.3 Rio 编译的服务器更新服务器,当前的 10.2 客户端(Win、MacOS、iOS、Android)会收到以下错误消息:内部:在 TJSONString 类型中找不到字段 FValue。

相反,当我们通过运行在 Amazon AWS 上的当前服务器 (10.2) 尝试使用 Delphi 10.3 Rio 编译的客户端时,我们收到以下错误消息:Internal: Field FStrBuffer cannot be found in type TJSONString。

拥有工作系统的唯一方法是使用 10.3 客户端和 10.3 服务器。但是,目前有很多用户,因此我们无法更改服务器部分并期望同时更新所有客户端(桌面和移动)。​​</p>

服务器上的代码:

function TServerMethods1.GetMembers: TFDJSONDataSets;
begin      
  sCurrentDBName := aDBName;   
  FDQueryMEMBERS.Close;   
  Result := TFDJSONDataSets.Create;   
  TFDJSONDataSetsWriter.ListAdd(Result, StrMEMBERS, FDQueryMembers);     
end;

客户端上的代码:

procedure TMemberServer.GetMembers;
var
  aDataSetLists: TFDJSONDataSets;
begin    
  aDataSetLists := ServerMethods.GetMembers(sDBName);      
  FDMemTableMembers.Active := false;
  FDMemTableMembers.AppendData(TFDJSONDataSetsReader.GetListValue(aDataSetLists, 0));    
end;

调查:

在 10.3 版本中System.JSONFValue实现了但没有实现FStrBuffer

在 10.2 版本中System.JSONFStrBuffer实现了但没有实现FValue

问题:

我们可以做些什么来保持当前的 10.2 用户正常工作并且还能够使用 10.3 Rio 更新服务器?

是否有另一种方法来实现此功能或是否有解决方法?

4

0 回答 0