Nein, das hat damit nichts zu tun.
> TField.DataSize und TField.Size
Dass da intern nochmal mehr Bytes sind, ist auch klar, aber hier geht es quasi nur um "CurValue".
Außerdem gibt es OldValue doch standardmäßig nur für den aktiven Datensatz und nicht für alle Datensätze.
Ja, DataSize ist größer, wegen
Unicode.
Wie groß das Feld in der Datenbank ist, ist mir egal (ist da UTF-8 und das sind 4 Byte pro Char, im Postgres), da es im DataSet dann als
Unicode steht.
Aber im TPgQuery/TClientDataSet ist, vor dem DataSnap/TDBXDataSetReader, die TWideStringField.Size z.B. 100 "Chars", bzw. TWideStringField.DataSize 202 Bytes (inkl. Längen-Word)
und nachher ist im TClientDataSet des Clienten die TWideStringField.Size 402 "Chars", bzw. TWideStringField.DataSize 802 Bytes (inkl. Längen-Word).
Bei den 10000 Chars ist es dann ein Längen-LongWord im DataSize.
http://docwiki.embarcadero.com/Libra...ideStringField
http://docwiki.embarcadero.com/Libra...DB.TField.Size > ftString = Size gibt die
maximale Anzahl der Zeichen im String an.