Есть поле DOCNUM VARCHAR(8), кодировка базы и поля, UTF8, соединение тоже UTF8. Использую FIBL + Firebird 2.5 + Lazarus 1.6 + FPC 3.0.0 + Win7
Проблема в следующем: пишу через FIBDataSet в это поле 'ПН-00001', а получаю 'ПН-000'.
С одной стороны, понятно, что Length('ПН-000') = 8, как длина поля. Но ведь это не правильно! Попытался через FIBQuery записать, ругается на превышение длины строки.
Полез в исходники, в TFIBStringField.SetAsString, там
- Код: Выделить всё
StrLCopy(Buffer, PChar(ValueStr), Size);
Поскольку размер поля 8, то вот она и обрезка. Попробовал решить в лоб, Size*4, ругается на превышение длины строки.
Глянул исходник IBX под лазарус, там тоже самое. Глянул дельфийский IBX, там еще проще, но суть та же.
Как решить проблему?