Привет!

> Обратная передача. Пишем в тройной CHAR-буфер однобайтные символы.
> Ровно N сиволов. Чем хвост (2*N байт) будем забивать? Для текстовых
> CHAR-ов забиваем пробелами. Для OCTETS-CHAR-ов забиваем нулями.

> С обычными колонками не эксперементировал, а вот с CHAR-массивами при
> записи такая фигня: сервер пытается отконвертировать все 3*N байт
> (UNIСODE_FSS) в N-байт (win1251). Получаем анус с переполнением.

> А почему? Потому что как ему сказать, что в этом огромном (3*N) буфере
> у нас только N байт c данными?

> Никак - и это у CHAR-ов на конструктивном уровне.

Хммм, а ведь реально, проблема. Я на подсознательном уровне CHAR не
любил - это, наверное, от жадности :)
Хотел предложить схитрить и передать серверу в 3 раза меньшее число в
sqllen, но это попахивает проктологией.
В древнем манускрипте по API есть цитата по поводу sqllen "Indicates
the  maximum size, in bytes, of data in the sqldata field; set by
InterBase during isc_dsql_describe(), isc_dsql_describe_bind(), or
isc_dsql_prepare()".

По идее там байты. И что, сервер ложит на это?


-- 
Best regards,
 Sergey                            mailto:[EMAIL PROTECTED]


Ответить