Einzelnen Beitrag anzeigen

braunbaer

Registriert seit: 15. Okt 2008
Ort: Vorarlberg
116 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Berlin kann keine Umlaute

  Alt 8. Jun 2016, 21:16
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
Gebhard Blank
  Mit Zitat antworten Zitat