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