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.