Page 1 of 1
Как открыть файл?
Posted: Wed Nov 19, 2014 1:17 pm
by Вий
Функции 6 и 7 не находят файл лежащий в той же папке что и исполняемый файл. Подскажите как его открыть.
Code: Select all
handle dw 0
file_test db 'Test.bmp',0
point_fname dd file_test
start:
red:
call draw_window
pixel:
mcall 1,100,100,0x33ffffff
call red
draw_window:
mcall 12,1
mcall 0,<50,800><50,600>, 0x336633ff,,title
mcall 7,file_test,<40,55><20,20>
mcall 6,file_test,0x00,0x10
cmp eax,-1
je ttt
mcall 12,2
ret
lsz title,\
ru'колобок',\
en'kolobok',\
Re: Как открыть файл?
Posted: Wed Nov 19, 2014 1:40 pm
by Mario_r4
1. Пользоваться ф.70
Описание:
http://websvn.kolibrios.org/filedetails ... sfuncr.txt
или
http://wiki.kolibrios.org/wiki/SysFn70/ru
2. Делать загрузку файла в подпрограмме отрисовки окна не самая лучшая идея, а вдруг потом захочется с менее быстрого носителя чем рамдиск файл открывать? Например с флопика, как пример самого медленного диска из имеющихся.
3. В данном конкретном коде ф.6 и ф.7 должны располагаться в обратной последовательности, а еще и параметры в обоих случаях заполнены неверно. Читайте документацию внимательней. Ф.6 не заполнен ESI, а ф.7 указывает не на буфер с изображением, а на строку имени.
Re: Как открыть файл?
Posted: Wed Nov 19, 2014 1:54 pm
by IgorA
Mario_r4 сказал все правильно, но еще нужно учесть что изображения bmp так сразу выводить не получится. Потому что в них первые 54 байта это заголовок самого файла а уже дальше идет само изображение. Т.е. нужно к памяти указывающей на изображение прибавлять 54. И это еще не все, изображение будет перевернутым сверху вниз, и его нужно будет самому вывернуть или в фале bmp или в программном коде.
Re: Как открыть файл?
Posted: Wed Nov 19, 2014 2:09 pm
by Mario_r4
IgorA
Может у человека особый BMP, который перевернут или совсем особый, который на самом деле RAW.
Re: Как открыть файл?
Posted: Wed Nov 19, 2014 2:20 pm
by Вий
Заголовок с файла вырезан, Mario_r4, а как объявить информационную структуру?
Re: Как открыть файл?
Posted: Wed Nov 19, 2014 2:29 pm
by Mario_r4
Вий wrote:а как объявить информационную структуру?
Например так:
Code: Select all
align 4
fileinfo:
.subfunction dd 0
.Offset dd 0
.Offset_1 dd 0
.size dd 0 ; здесь записать размер файла в байтах
.return dd file_body ; указатель на область памяти куда файл загрузит
db 0
.name: dd file_name ; указатель на имя файла
file_name db '/rd/1/test.bmp',0
Вообще правильно сначала запросить данные на файл (ф.70.5), выделить память и потом уже загрузить (ф.70.0).
З.Ы. Можно вообще не париться с загрузкой и присоединить файл изображения во время компиляции, если не планируется его менять, но исполняемый бинарник при этом разбухнет конечно.