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).

З.Ы. Можно вообще не париться с загрузкой и присоединить файл изображения во время компиляции, если не планируется его менять, но исполняемый бинарник при этом разбухнет конечно.