powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / PB и BLOB
4 сообщений из 4, страница 1 из 1
PB и BLOB
    #32565931
SoftProgrammer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Господа, как Вы думаете, почему следующий код выдает, что blob_inp пустой. PB версии 6.5. В PB9 все так же.

Blob blob_inp//входной объект с бд
DO
li_read = FileRead(li_FileNum, blob_tmp)
if li_read = -1 then
return 0;
end if
BlobEdit(blob_inp, li_currentsize + 1, blob_tmp)
li_currentsize = li_currentsize + li_read
LOOP WHILE li_currentsize <> li_FileSize

MessageBox('dsfads', string(blob_inp))
...
Рейтинг: 0 / 0
PB и BLOB
    #32565935
SoftProgrammer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
li_CurrentSize = 0 изначально. Файл прекрасно открывается .
...
Рейтинг: 0 / 0
PB и BLOB
    #32566114
Фотография ЗоринАндрей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ошибка раз - FileRead может вернуть -100, а проверяем только на -1.


ошибка два - int li_ должно быть long ll_ , max integer == 32k, а весь смысл цикла - чтение файла кусками по 32k.


ошибка три - не проверяется возвращаемое значение BlobEdit, а поскольку
место в исходном блобе не зарезервировано - возвращается NULL.
перед циклом вставьте
Код: plaintext
blob_inp = blob(Fill(" ",li_filesize))
(возможно не оптимальное решение - кто предложит лучшее?)

З.Ы. я бы не стал мудрить со встроенными функциями и циклами, а подключил Win32 API OpenFile/ReadFile/CloseHandle. код будет проще и работать будет быстрее.
BlobMid/BlobEdit очень неторопливые функции.

З.З.Ы. а в чем смысл использования BlobEdit? что мешало просто написать
Код: plaintext
blob_inp =  blob_inp + blob_tmp
...
Рейтинг: 0 / 0
PB и BLOB
    #32566549
SoftProgrammer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
>З.З.Ы. а в чем смысл использования BlobEdit? что мешало просто написать >blob_inp = blob_inp + blob_tmp


Вчера так и сделал. Насчет остального спасибо. Переменные, начинающиеся в li, на самом деле long, просто забыл переименовать.
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / PB и BLOB
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]