Hallo Harry
Zitat von
Harry Stahl:
Evtl. nicht
Unicode-Text?
Danke für den Hinweis !!
Ich habe vor lauter Bäumen den Wald nicht mehr gesehen
Da der Datasnapserver kein TFDDataset übergeben kann, habe ich dieses in einen Json - Stream geschrieben.
Dabei hatte ich zuerst keine Konvertierung implementiert.
Hier der korrekte Code:
Server:
Code:
function Tdm.DataSetToJSON(Source: TFDDataSet): string;
var
stream: TStringStream;
begin
stream := TStringStream.Create;
try
Source.SaveToStream(stream, TFDStorageFormat.sfJSON);
result := UTF8ToUnicodeString(stream.DataString);
finally
stream.Free;
end;
end;
Gegenstück am Client:
Code:
procedure Tdm.JSONToDataSet(const Source: string; Target: TFDDataSet);
var
stream: TStringStream;
utf8Text: UTF8string;
begin
SetLength(utf8Text, Length(Source) * SizeOf(Char) + 1);
UnicodeToUtf8(PAnsiChar(utf8Text), Length(utf8Text), PWideChar(Source), Length(Source));
stream := TStringStream.Create(utf8Text);
try
Target.LoadFromStream(stream, TFDStorageFormat.sfJSON);
finally
stream.Free;
end;
end;
Jetzt funktioniert es einwandfrei auf allen Plattformen !!!
vielen Dank.
Gruß
Gebhard