2017-06-27 3 views
0

Ich arbeite an REMOON/Jason, aber wenn ich eine Verbindung zu meinem Methodenserver über DataSnap-Clientklassen herstelle, um die Rückgabe meiner Abfrage zu erhalten, löst die folgende Zeile eine Ausnahme aus:Delphi Tokyo 10.2 - 710 ungültiges Binärspeicherformat

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

enter image description here

Wichtig:

Es verstand sich von selbst, dass das Problem tritt nur in der iOS-Simulator.

Wenn ich ANDROID oder WIN32 verwende, tritt das Problem nicht auf.

enter image description here

jemand irgendwelche Vorschläge?

+0

Verwenden Sie 'TFDJSONDataSetsReader',' TFDJSONDataSetsWriter'. – Victoria

Antwort

1

Ich habe den gleichen Fehler auf iOS. Nach einigen Untersuchungen habe ich den Fehler gefunden, der diesen Fehler im Embarcadero-Quellcode verursacht hat.

Die Einheit Data.FireDACJSONReflect hat die Funktion MemTableFromString(...). Innerhalb dieser Funktion soll die Zeile (435) LMemoryStream.Seek(Longint(0), soFromBeginning);.auf 0 setzen. Es tut dies auf allen Plattformen außer für iOS (Ich habe auf Win32/64 und Android getestet). Auf iOS tut es nichts. (Die tatsächlichen Parameter von Seek Funktionsaufruf wird 0 und soCurrent).

geändert Gerade diese Zeile (435) in der Einheit Data.FireDACJSONReflect

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

auf die richtigen einem

LMemoryStream.Seek(0, TSeekOrigin.soBeginning); 

(Sie müssen irgendwo korrigiert Einheit speichern, fügen Sie es zu einem Projekt und alte Einheit ersetzen mit dem neuen in uses Klausel Ihrer Quelle)

Verwandte Themen