![]() |
#1 |
Участник
|
Доброго времени суток!
Я никак не могу разобраться, как читать BLOB побитово? Т.е. в принципе с сутью я разобрался, а вот с практикой что-то пока никак. Мне нужно пропустить в файле первые 18 бит, а потом 2 раза прочитать по 4 бита в Integer. Я создаю InStream объект StreamInObj. Потом делаю так: Код: mFile.OPEN (FilePath); mFile.CREATEINSTREAM (StreamInObj); StreamInObj.READ(temp, 18); //temp просто текстовая переменная, что бы "пропустить" в неё 18 байт StreamInObj.READ(x, 4); //А тут пытаюсь прочитать 4 байта в переменную x типа Integer StreamInObj.READ(y, 4); mFile.CLOSE; ![]() |
|
![]() |
#2 |
Участник
|
Там вначале, опечатка, а я уже не могу отредактировать сообщение. Там BLOB, а нужно файл. Я просто в начале хотел BLOB читать, а потом нашёл на форуме темы, где пишут, что в блобе данные могут храниться не так как в файле. Поэтому решил всё же работать с файлом, хотя принцип судя по всему и там и там одинаковый.
|
|
![]() |
#3 |
Участник
|
mFile.TEXTMODE(FALSE) не помогает?
|
|
![]() |
#4 |
Участник
|
Цитата:
Сообщение от Predatore
![]() Я никак не могу разобраться, как читать BLOB побитово? Мне нужно пропустить в файле первые 18 бит, а потом 2 раза прочитать по 4 бита в Integer.
... Код: StreamInObj.READ(temp, 18); //temp просто текстовая переменная, что бы "пропустить" в неё 18 байт StreamInObj.READ(x, 4); //А тут пытаюсь прочитать 4 байта в переменную x типа Integer |
|
![]() |
#5 |
Участник
|
Если всё-таки "побайтно", то можно не указывать длину для целых, и так читается 4 байта. Кстати, с какой версии Nav появилась длина? У меня в 3.1 нет.
|
|
![]() |
#6 |
Участник
|
Конечно же побайтно. Весь пост, сплошные опечатки, видимо потому что спать надо в такое время, а не вопросы на форуме задавать
![]() mFile.TEXTMODE(FALSE) - попробую. В Нав 4.0 у меня есть длина. А ещё есть мысль попробовать 18 байт "пропускать" не в текстовую переменную, а в массив чаров, есть подозрение, что что-то не так с текстом. |
|
![]() |
#7 |
Участник
|
mFile.TEXTMODE(FALSE) не помогает
![]() В текстовую переменную видимо не правильно читать, по ходу в неё вообще чтения не происходит, т.к. сколько бы я в неё не прочитал, дальнейшее чтение в инты даёт всё время один и тот же результат. А в массив чаров у меня меня почему-то не получается читать, даже скомпилить не даёт, пишет "Размерности массива должны совпадать", даже если я не указываю сколько читать, по хелпу в таком случае он должен прочитать столько сколько занимает переменная. Сейчас суть проблемы в том, что я не могу сдвинуться на 18 байт, т.к. читая в инты, я могу сдвинуться только на 16 или на 20 ![]() ![]() |
|
![]() |
#8 |
Участник
|
Цитата:
Сообщение от Predatore
![]() mFile.TEXTMODE(FALSE) не помогает
![]() В текстовую переменную видимо не правильно читать, по ходу в неё вообще чтения не происходит, т.к. сколько бы я в неё не прочитал, дальнейшее чтение в инты даёт всё время один и тот же результат. А в массив чаров у меня меня почему-то не получается читать, даже скомпилить не даёт, пишет "Размерности массива должны совпадать", даже если я не указываю сколько читать, по хелпу в таком случае он должен прочитать столько сколько занимает переменная. Сейчас суть проблемы в том, что я не могу сдвинуться на 18 байт, т.к. читая в инты, я могу сдвинуться только на 16 или на 20 ![]() ![]() Можно еще попробовать воспользоваться не популярным типом Binary, указав его длину - 18 байт. |
|
![]() |
#9 |
Участник
|
Цитата:
![]() |
|
![]() |
#10 |
Участник
|
Цитата:
Сообщение от Alterant
![]() Цитата:
Сообщение от Predatore
![]() mFile.TEXTMODE(FALSE) не помогает
![]() В текстовую переменную видимо не правильно читать, по ходу в неё вообще чтения не происходит, т.к. сколько бы я в неё не прочитал, дальнейшее чтение в инты даёт всё время один и тот же результат. А в массив чаров у меня меня почему-то не получается читать, даже скомпилить не даёт, пишет "Размерности массива должны совпадать", даже если я не указываю сколько читать, по хелпу в таком случае он должен прочитать столько сколько занимает переменная. Сейчас суть проблемы в том, что я не могу сдвинуться на 18 байт, т.к. читая в инты, я могу сдвинуться только на 16 или на 20 ![]() ![]() Можно еще попробовать воспользоваться не популярным типом Binary, указав его длину - 18 байт. |
|
![]() |
#11 |
Участник
|
|
|