13.09.2011, 01:13 | #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; |
|
13.09.2011, 01:46 | #2 |
Участник
|
Там вначале, опечатка, а я уже не могу отредактировать сообщение. Там BLOB, а нужно файл. Я просто в начале хотел BLOB читать, а потом нашёл на форуме темы, где пишут, что в блобе данные могут храниться не так как в файле. Поэтому решил всё же работать с файлом, хотя принцип судя по всему и там и там одинаковый.
|
|
13.09.2011, 09:38 | #3 |
Участник
|
mFile.TEXTMODE(FALSE) не помогает?
|
|
13.09.2011, 09:52 | #4 |
Участник
|
Цитата:
Сообщение от Predatore
Я никак не могу разобраться, как читать BLOB побитово? Мне нужно пропустить в файле первые 18 бит, а потом 2 раза прочитать по 4 бита в Integer.
... Код: StreamInObj.READ(temp, 18); //temp просто текстовая переменная, что бы "пропустить" в неё 18 байт StreamInObj.READ(x, 4); //А тут пытаюсь прочитать 4 байта в переменную x типа Integer |
|
13.09.2011, 10:11 | #5 |
Участник
|
Если всё-таки "побайтно", то можно не указывать длину для целых, и так читается 4 байта. Кстати, с какой версии Nav появилась длина? У меня в 3.1 нет.
|
|
13.09.2011, 10:30 | #6 |
Участник
|
Конечно же побайтно. Весь пост, сплошные опечатки, видимо потому что спать надо в такое время, а не вопросы на форуме задавать
mFile.TEXTMODE(FALSE) - попробую. В Нав 4.0 у меня есть длина. А ещё есть мысль попробовать 18 байт "пропускать" не в текстовую переменную, а в массив чаров, есть подозрение, что что-то не так с текстом. |
|
13.09.2011, 11:00 | #7 |
Участник
|
mFile.TEXTMODE(FALSE) не помогает
В текстовую переменную видимо не правильно читать, по ходу в неё вообще чтения не происходит, т.к. сколько бы я в неё не прочитал, дальнейшее чтение в инты даёт всё время один и тот же результат. А в массив чаров у меня меня почему-то не получается читать, даже скомпилить не даёт, пишет "Размерности массива должны совпадать", даже если я не указываю сколько читать, по хелпу в таком случае он должен прочитать столько сколько занимает переменная. Сейчас суть проблемы в том, что я не могу сдвинуться на 18 байт, т.к. читая в инты, я могу сдвинуться только на 16 или на 20 А в чары чиать не получается |
|
13.09.2011, 12:27 | #8 |
Участник
|
Цитата:
Сообщение от Predatore
mFile.TEXTMODE(FALSE) не помогает
В текстовую переменную видимо не правильно читать, по ходу в неё вообще чтения не происходит, т.к. сколько бы я в неё не прочитал, дальнейшее чтение в инты даёт всё время один и тот же результат. А в массив чаров у меня меня почему-то не получается читать, даже скомпилить не даёт, пишет "Размерности массива должны совпадать", даже если я не указываю сколько читать, по хелпу в таком случае он должен прочитать столько сколько занимает переменная. Сейчас суть проблемы в том, что я не могу сдвинуться на 18 байт, т.к. читая в инты, я могу сдвинуться только на 16 или на 20 А в чары чиать не получается Можно еще попробовать воспользоваться не популярным типом Binary, указав его длину - 18 байт. |
|
13.09.2011, 14:19 | #9 |
Участник
|
Вы не могли бы скинуть свой текстовый файл (нсли это, конечно, не коммерческая тайна)? Просто хотелось бы самой посмотреть, что там не так происходит и почему. (как раз недавно имела дело с обработкой, которая считывает из текстового файла и разбивает текст на отдельные байты/символы)
|
|
13.09.2011, 14:38 | #10 |
Участник
|
Цитата:
Сообщение от Alterant
Цитата:
Сообщение от Predatore
mFile.TEXTMODE(FALSE) не помогает
В текстовую переменную видимо не правильно читать, по ходу в неё вообще чтения не происходит, т.к. сколько бы я в неё не прочитал, дальнейшее чтение в инты даёт всё время один и тот же результат. А в массив чаров у меня меня почему-то не получается читать, даже скомпилить не даёт, пишет "Размерности массива должны совпадать", даже если я не указываю сколько читать, по хелпу в таком случае он должен прочитать столько сколько занимает переменная. Сейчас суть проблемы в том, что я не могу сдвинуться на 18 байт, т.к. читая в инты, я могу сдвинуться только на 16 или на 20 А в чары чиать не получается Можно еще попробовать воспользоваться не популярным типом Binary, указав его длину - 18 байт. |
|
13.09.2011, 16:13 | #11 |
Участник
|
|
|