Board.KolibriOS.org

Официальный форум KolibriOS
Текущее время: Сб ноя 18, 2017 4:04 am

Часовой пояс: UTC+03:00




Начать новую тему  Ответить на тему  [ 6 сообщений ] 
Автор Сообщение
 Заголовок сообщения: Как открыть файл?
СообщениеДобавлено: Ср ноя 19, 2014 1:17 pm 
Не в сети

Зарегистрирован: Ср ноя 19, 2014 1:01 am
Сообщения: 2
Функции 6 и 7 не находят файл лежащий в той же папке что и исполняемый файл. Подскажите как его открыть.
Код:
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',\


Вложения:
Безымянный 2.png
Безымянный 2.png [ 4.55 КБ | 1731 просмотр ]
Вернуться к началу
 Заголовок сообщения: Re: Как открыть файл?
СообщениеДобавлено: Ср ноя 19, 2014 1:40 pm 
Не в сети
Kernel Developer

Зарегистрирован: Вс фев 10, 2013 12:37 pm
Сообщения: 2329
1. Пользоваться ф.70
Описание:
http://websvn.kolibrios.org/filedetails ... sfuncr.txt
или
http://wiki.kolibrios.org/wiki/SysFn70/ru

2. Делать загрузку файла в подпрограмме отрисовки окна не самая лучшая идея, а вдруг потом захочется с менее быстрого носителя чем рамдиск файл открывать? Например с флопика, как пример самого медленного диска из имеющихся.

3. В данном конкретном коде ф.6 и ф.7 должны располагаться в обратной последовательности, а еще и параметры в обоих случаях заполнены неверно. Читайте документацию внимательней. Ф.6 не заполнен ESI, а ф.7 указывает не на буфер с изображением, а на строку имени.

_________________
Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!


Последний раз редактировалось Mario_r4 Ср ноя 19, 2014 2:08 pm, всего редактировалось 1 раз.

Вернуться к началу
 Заголовок сообщения: Re: Как открыть файл?
СообщениеДобавлено: Ср ноя 19, 2014 1:54 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Пн окт 27, 2008 10:10 pm
Сообщения: 750
Mario_r4 сказал все правильно, но еще нужно учесть что изображения bmp так сразу выводить не получится. Потому что в них первые 54 байта это заголовок самого файла а уже дальше идет само изображение. Т.е. нужно к памяти указывающей на изображение прибавлять 54. И это еще не все, изображение будет перевернутым сверху вниз, и его нужно будет самому вывернуть или в фале bmp или в программном коде.


Вернуться к началу
 Заголовок сообщения: Re: Как открыть файл?
СообщениеДобавлено: Ср ноя 19, 2014 2:09 pm 
Не в сети
Kernel Developer

Зарегистрирован: Вс фев 10, 2013 12:37 pm
Сообщения: 2329
IgorA
Может у человека особый BMP, который перевернут или совсем особый, который на самом деле RAW.

_________________
Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!


Вернуться к началу
 Заголовок сообщения: Re: Как открыть файл?
СообщениеДобавлено: Ср ноя 19, 2014 2:20 pm 
Не в сети

Зарегистрирован: Ср ноя 19, 2014 1:01 am
Сообщения: 2
Заголовок с файла вырезан, Mario_r4, а как объявить информационную структуру?


Вернуться к началу
 Заголовок сообщения: Re: Как открыть файл?
СообщениеДобавлено: Ср ноя 19, 2014 2:29 pm 
Не в сети
Kernel Developer

Зарегистрирован: Вс фев 10, 2013 12:37 pm
Сообщения: 2329
Вий писал(а):
а как объявить информационную структуру?

Например так:
Код:
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).

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

_________________
Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!


Вернуться к началу
Показать сообщения за:  Поле сортировки  
Начать новую тему  Ответить на тему  [ 6 сообщений ] 

Часовой пояс: UTC+03:00


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

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


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Limited
Русская поддержка phpBB