Delphi Tokyo 10.2 - 710 二进制存储格式无效

Delphi Tokyo 10.2 - 710 invalid binary storage format

我正在使用 REST/Jason 处理 firemonkey,但是,当我通过 DataSnap Client 类 连接到我的方法服务器以获取查询的 return 时,以下行抛出一个例外:

Result := TFDJSONDataSets(FUnMarshal.UnMarshal(FGetAlunoAutenticacaoCommand.Parameters[3].Value.GetJSONValue(True)));

重要:

不用说,这个问题只出现在iOS模拟器中。

当我使用 ANDROID 或 WIN32 时,问题没有发生。

有人有什么建议吗?

我在 iOS 上遇到了同样的错误。 经过一些调查,我在 Embarcadero 的源代码中找到了导致此错误的错误。

单元 Data.FireDACJSONReflect 具有功能 MemTableFromString(...)。在这个函数中,行 (435) LMemoryStream.Seek(Longint(0), soFromBeginning); 意味着将 LMemoryStream.Position 设置为 0。除了 iOS(我已经在 Win32/64 和 Android 上测试过),它在所有平台上都这样做。在 iOS 上它什么都不做。 (Seek函数调用的实际参数变为0soCurrent)。

刚刚在单元Data.FireDACJSONReflect中更改了这一行 (435)

LMemoryStream.Seek(Longint(0), soFromBeginning);

正确的

LMemoryStream.Seek(0, TSeekOrigin.soBeginning);

(您需要将更正后的单位保存在某处,将其添加到您的项目中,并在源的 uses 子句中用新单位替换旧单位)