|
Ошибка чтения поля TEXT в файл
|
|||
---|---|---|---|
#18+
Имеется сервер Informix с таблицей, в которой есть поле типа TEXT, в которое на этом сервере записываются файлы. И имеется компьютер на котором установлен ODBC-драйвер из поставки Informix'а. Считывание файлов происходит из программы на Delphi через TADOConnection - TADOQuery таким образом: Код: plaintext 1. 2. 3. 4. 5. 6.
Ошибка в том, что в поле таблицы лежит файл размером, допустим, 10 Килобайт, а приведенная выше операция считывает пять байт. Причем известно, что в этом файле шестой байт имеет значение $00. Таким образом, происходит отсчение данных как будто это нуль-терминированная строка. Кто виноват, Delphi, ODBC-драйвер или сервер? И куда копать? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2012, 12:58 |
|
Ошибка чтения поля TEXT в файл
|
|||
---|---|---|---|
#18+
Гость123Имеется сервер Informix с таблицей, в которой есть поле типа TEXT, в которое на этом сервере записываются файлы. И имеется компьютер на котором установлен ODBC-драйвер из поставки Informix'а. Считывание файлов происходит из программы на Delphi через TADOConnection - TADOQuery таким образом: Код: plaintext 1. 2. 3. 4. 5. 6.
Ошибка в том, что в поле таблицы лежит файл размером, допустим, 10 Килобайт, а приведенная выше операция считывает пять байт. Причем известно, что в этом файле шестой байт имеет значение $00. Таким образом, происходит отсчение данных как будто это нуль-терминированная строка. Кто виноват, Delphi, ODBC-драйвер или сервер? И куда копать? Это леко проверит. Попробуйте не использовать Delphi, а использовать ODBC с включенной трассировкой. Не известно насколько правильно Delphi транслирует типы данных Informix в типы данных внутреннего представления. Рашьше у Delphi были проблемы с таким преобразованем даже при использовании Native SQL Link драйверов для Informix. С уважением, Вадим. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2012, 14:47 |
|
Ошибка чтения поля TEXT в файл
|
|||
---|---|---|---|
#18+
Странно, трудно заподозрить Delphi во внимании к нулевым символам. Попробую трассировку. Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2012, 17:15 |
|
Ошибка чтения поля TEXT в файл
|
|||
---|---|---|---|
#18+
Это ADO гадит (я уже ранее нарывался). BDE и AnyDAC версий 2-5 (через ODBC) будут выгружать нормально. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2012, 22:36 |
|
Ошибка чтения поля TEXT в файл
|
|||
---|---|---|---|
#18+
На всякий случай расскажу. Трассировка помогла. Среди обилия информации удалось найти строчки, в которых фигурировал реальный объем файла, то есть сервер передавал его целиком. Судя по всему ADO действительно виноват. Выгрузка с помощью dbExpress была удачной. Но тут вылезла еще одна "фича". При закачке файлов назад, в базу данных, теперь уже dbExpress зачем-то добавляет в конец файла дополнительный символ $00. Вот так и работаю: получаю - используя dbExpress, закачиваю - используя ADO. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.05.2012, 22:12 |
|
|
start [/forum/topic.php?fid=44&msg=37792181&tid=1607165]: |
0ms |
get settings: |
3ms |
get forum list: |
7ms |
check forum access: |
1ms |
check topic access: |
1ms |
track hit: |
51ms |
get topic data: |
5ms |
get forum data: |
1ms |
get page messages: |
114ms |
get tp. blocked users: |
1ms |
others: | 307ms |
total: | 491ms |
0 / 0 |