[fpc-pascal] TStringField.Size

Michael Van Canneyt michael at freepascal.org
Mon Jul 14 14:59:39 CEST 2025



On Mon, 14 Jul 2025, Luca Olivetti via fpc-pascal wrote:

> El 14/7/25 a les 14:30, Michael Van Canneyt via fpc-pascal ha escrit:
>> 
>> 
>> On Mon, 14 Jul 2025, Luca Olivetti via fpc-pascal wrote:
>> 
>>> Hello,
>>> 
>>> In a project I'm using both an sql server database (TMSSQLConnection) and 
>>> a postgresql one (TPQConnection).
>>> One of the TStringField is defined as size 100, but in the sql server it 
>>> has been changed to to 200.
>>> Even without changing the TStringField.Size in the program I can get 
>>> values longer than 100 characters.
>>> I did a test with the TPQConnection and if I change the size of a field, 
>>> the TStringField is truncated according to its size.
>>> Why the difference between the two database connectors? Shouldn't it 
>>> depend exclusively on the TField implementation?
>> 
>> No, the field size is calculated by the connection component and whether or
>> not it uses UTF8 for the character set.
>
> That's not what the documentation says
>
> https://www.freepascal.org/docs-html/fcl/db/tstringfield.size.html (emphasis 
> mine)
>
> "it is the declared *maximum* size of the string (in *characters*) and is 
> used to calculate the size of the dataset buffer."

Seems the documentation has not been updated for the unicode case :-(

Michael.


More information about the fpc-pascal mailing list