Чтение файла в буфер

Раздел посвящен программированию с использованием Power Basic.
Kroos
Обычный пользователь
Обычный пользователь
 
Сообщения: 55
Зарегистрирован: 21.02.2012 (Вт) 16:57

Чтение файла в буфер

Сообщение Kroos » 29.10.2014 (Ср) 12:23

Пытаюсь прочитать файлы картинок, а читается только первые несколько байт заголовка, а потом все, "конец файла"... почему?
Код: Выделить всё
Local Buffer, sFile AS STRING
sFile = "image.bmp"
IF ISFILE(sFile) THEN
    OPEN sFile FOR BINARY AS #1
    Buffer = STRING$(LOF(1),"0")
    GET #1, 1, Buffer
   CLOSE #1
END IF

? Buffer


В буфере - "BM Ђ "

C winapi такая же фигня... так как прочитать весь файл-то?
Если читаю не с 1го байта, то кусок данных падает в буфер, но опять же - кусок...

jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Re: Чтение файла в буфер

Сообщение jangle » 29.10.2014 (Ср) 12:47

Код: Выделить всё
GET #1, Lof(1), Buffer

pronto
Постоялец
Постоялец
 
Сообщения: 597
Зарегистрирован: 04.12.2005 (Вс) 6:20
Откуда: Владивосток

Re: Чтение файла в буфер

Сообщение pronto » 29.10.2014 (Ср) 14:11

Код: Выделить всё
Local Buffer() as Byte

Open sFile For Binary As #1
   Redim Buffer(LOF(1)-1)
   Get #1, 1, Buffer
Close #1
O, sancta simplicitas!

Kroos
Обычный пользователь
Обычный пользователь
 
Сообщения: 55
Зарегистрирован: 21.02.2012 (Вт) 16:57

Re: Чтение файла в буфер

Сообщение Kroos » 30.10.2014 (Чт) 4:10

jangle писал(а):GET #1, Lof(1), Buffer

нет, это Binary, тут задаем не кол-во байт, а стартовую позицию. я и такой по смыслу вариант тоже пробовал, не читает, и с GET$ тоже облом. никак не читает, не пойму почему

pronto писал(а):Local Buffer() as Byte

Open sFile For Binary As #1
Redim Buffer(LOF(1)-1)
Get #1, 1, Buffer
Close #1

а вот так проканало, спасибо 8) (только не Buffer а Buffer() )

jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Re: Чтение файла в буфер

Сообщение jangle » 30.10.2014 (Чт) 14:19

Kroos писал(а):
jangle писал(а):GET #1, Lof(1), Buffer

нет, это Binary, тут задаем не кол-во байт, а стартовую позицию. я и такой по смыслу вариант тоже пробовал, не читает, и с GET$ тоже облом. никак не читает, не пойму почему


Все читает c GET$ :

Код: Выделить всё
    Get$ #1, Lof(1), Buffer   

Kroos
Обычный пользователь
Обычный пользователь
 
Сообщения: 55
Зарегистрирован: 21.02.2012 (Вт) 16:57

Re: Чтение файла в буфер

Сообщение Kroos » 31.10.2014 (Пт) 4:08

мм да, проверил длину Buffer, она равна размеру файла... видимо в виде обычной строки просто некорректно отображалось, обрезает на нулевых байтах... а вообще корректно так читать Binary в String ?

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 31.10.2014 (Пт) 13:22

Kroos писал(а):а вообще корректно так читать Binary в String ?

Никак? ;)

jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Re: Чтение файла в буфер

Сообщение jangle » 01.11.2014 (Сб) 22:00

Kroos писал(а):мм да, проверил длину Buffer, она равна размеру файла... видимо в виде обычной строки просто некорректно отображалось, обрезает на нулевых байтах... а вообще корректно так читать Binary в String ?


BSTR строка это просто буфер памяти, в нем можно хранить все что угодно

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Чтение файла в буфер

Сообщение Хакер » 04.12.2014 (Чт) 4:16

jangle писал(а):BSTR строка это просто буфер памяти, в нем можно хранить все что угодно

За хранение там «чего угодно» надо бить кувалдой по темечку.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Re: Чтение файла в буфер

Сообщение jangle » 04.12.2014 (Чт) 10:18

Хакер писал(а):
jangle писал(а):BSTR строка это просто буфер памяти, в нем можно хранить все что угодно

За хранение там «чего угодно» надо бить кувалдой по темечку.


это еще почему?

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Чтение файла в буфер

Сообщение Хакер » 04.12.2014 (Чт) 10:28

jangle писал(а):это еще почему?

Уже обсуждалось тут: viewtopic.php?f=1&t=45649&hilit=bstr&start=0
Но вряд ли до тебя дойдёт, ведь до тебя недоходило, почему плохо на кнопку «Выход» садить вызов ExitProcess.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Re: Чтение файла в буфер

Сообщение jangle » 04.12.2014 (Чт) 11:48

Хакер писал(а):
jangle писал(а):это еще почему?

Уже обсуждалось тут: viewtopic.php?f=1&t=45649&hilit=bstr&start=0
Но вряд ли до тебя дойдёт, ведь до тебя недоходило, почему плохо на кнопку «Выход» садить вызов ExitProcess.


Хамло высокомерное

NashRus
Постоялец
Постоялец
 
Сообщения: 388
Зарегистрирован: 18.03.2006 (Сб) 1:16

Re: Чтение файла в буфер

Сообщение NashRus » 05.12.2014 (Пт) 20:24

только не надо бана. он хороший

bon818
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 267
Зарегистрирован: 29.08.2009 (Сб) 4:49
Откуда: Ташкент

Re: Чтение файла в буфер

Сообщение bon818 » 05.12.2014 (Пт) 23:40

jangle писал(а):Хамло высокомерное

+1
NashRus писал(а):только не надо бана. он хороший

Какой еще бана. даешь нормальный форум, без уничижительного тона с блекджеком и шлюхами.
Корректно читать Binary в String = PowerBasic Да да и да (язык позволяет, если удобно, доказывать не буду, не хошь как хошь.)

DarkMachine
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 51
Зарегистрирован: 24.02.2012 (Пт) 15:58

Re: Чтение файла в буфер

Сообщение DarkMachine » 27.01.2015 (Вт) 12:38

Вот этот кусок кода - всегда работало и работает...
Код: Выделить всё
F = FREEFILE
OPEN file FOR BINARY AS #F
L = LOF(#F)
S = SPACE$(L)
GET$ #F, L, S
CLOSE #F


Вернуться в Power Basic

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 10

    TopList