Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
39.426 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: DataSnap verdoppelt Daten

  Alt 12. Mai 2016, 12:16
SELECT 'abc'::VARCHAR(10)

im PgQuery - NativeFormat ist kaputt, oder warum bekomm ich die LängenBytes beim PgQuery nicht mit raus?
10:22=61006200630000000000000000000000000000000000
10:22=61006200630000000000000000000000000000000000

im ClientDataSet nach DataSnap
46:94=060061006200630000200000005C0B0F000100000210D718008508190694D71800 6002CE0DAA382850B0A9FA7630F7AE00780000008508190685 0819066002CE0D94D718006FDF275085081906200000006002 CE0DF0EDA476A255F7FAFE
46:94=61006200630000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000 00000000000000000000000000

Delphi-Quellcode:
SetLength(B, DS.DataSet.Fields[0].DataSize);
SetLength(S, DS.DataSet.Fields[0].DataSize * 2);
DS.DataSet.Fields[0].GetData(@B[0], True);
BinToHex(B[0], PChar(S), DS.DataSet.Fields[0].DataSize);
ShowMessage(IntToStr(DS.DataSet.Fields[0].Size) + ':' + IntToStr(DS.DataSet.Fields[0].DataSize) + '=' + S);

B := nil;
SetLength(B, DS.DataSet.Fields[0].DataSize);
SetLength(S, DS.DataSet.Fields[0].DataSize * 2);
DS.DataSet.Fields[0].GetData(@B[0], False);
BinToHex(B[0], PChar(S), DS.DataSet.Fields[0].DataSize);
ShowMessage(IntToStr(DS.DataSet.Fields[0].Size) + ':' + IntToStr(DS.DataSet.Fields[0].DataSize) + '=' + S);
Aber, wie gesagt, SIZE gibt die "Zeichen" an, also sollte das unabhängig davon sein, wie das intern gespeichert wird.
3 UTF-8-Zeichen bleiben doch 3 Unicode-Zeichen


[edit] vielleicht speichert TPgQuery das einfach 0-terminiert und TClientDataSet mit Längenangabe.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
Delphi-Tage 2005-2014

Geändert von himitsu (12. Mai 2016 um 13:30 Uhr)
  Mit Zitat antworten Zitat