Delphi Tokyo 10.2 - 710 недопустимый двоичный формат хранения

Я работаю над firemonkey, используя REST/Jason, однако, когда я подключаюсь к своему серверу методов через клиентские классы DataSnap, чтобы получить ответ на мой запрос, следующая строка выдает исключение:

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

введите здесь описание изображения

Важный:

Само собой разумеется, что проблема возникает только в симуляторе iOS.

Когда я использую ANDROID или WIN32, проблема не возникает.

введите здесь описание изображения

У кого-нибудь есть предложения?


person Zoe Tecnologia    schedule 27.06.2017    source источник
comment
Попробуйте использовать TFDJSONDataSetsReader, TFDJSONDataSetsWriter.   -  person Victoria    schedule 27.06.2017


Ответы (1)


У меня такая же ошибка на iOS. После некоторого расследования я обнаружил ошибку, вызывающую эту ошибку, в исходном коде Embarcadero.

Блок Data.FireDACJSONReflect имеет функцию MemTableFromString(...). Внутри этой функции строка (435) LMemoryStream.Seek(Longint(0), soFromBeginning); означала установку LMemoryStream.Position на 0. Это происходит на всех платформах, кроме iOS (я тестировал на Win32/64 и Android). На iOS ничего не делает. (фактические параметры вызова функции Seek становятся 0 и soCurrent).

Просто изменил эту строку (435) в блоке Data.FireDACJSONReflect

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

к правильному

LMemoryStream.Seek(0, TSeekOrigin.soBeginning);

(Вам нужно где-то сохранить исправленную единицу, добавить ее в свой проект и заменить старую единицу на новую в uses пункте вашего исходника)

person dustypup    schedule 21.09.2017