Страница 1 из 1

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

СообщениеДобавлено: 29.10.2014 (Ср) 12:23
Kroos
Пытаюсь прочитать файлы картинок, а читается только первые несколько байт заголовка, а потом все, "конец файла"... почему?
Код: Выделить всё
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го байта, то кусок данных падает в буфер, но опять же - кусок...

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

СообщениеДобавлено: 29.10.2014 (Ср) 12:47
jangle
Код: Выделить всё
GET #1, Lof(1), Buffer

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

СообщениеДобавлено: 29.10.2014 (Ср) 14:11
pronto
Код: Выделить всё
Local Buffer() as Byte

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

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

СообщениеДобавлено: 30.10.2014 (Чт) 4:10
Kroos
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() )

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

СообщениеДобавлено: 30.10.2014 (Чт) 14:19
jangle
Kroos писал(а):
jangle писал(а):GET #1, Lof(1), Buffer

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


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

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

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

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

СообщениеДобавлено: 31.10.2014 (Пт) 13:22
Qwertiy
Kroos писал(а):а вообще корректно так читать Binary в String ?

Никак? ;)

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

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


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

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

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

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

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

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

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


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

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

СообщениеДобавлено: 04.12.2014 (Чт) 10:28
Хакер
jangle писал(а):это еще почему?

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

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

СообщениеДобавлено: 04.12.2014 (Чт) 11:48
jangle
Хакер писал(а):
jangle писал(а):это еще почему?

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


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

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

СообщениеДобавлено: 05.12.2014 (Пт) 20:24
NashRus
только не надо бана. он хороший

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

СообщениеДобавлено: 05.12.2014 (Пт) 23:40
bon818
jangle писал(а):Хамло высокомерное

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

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

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

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