Board.KolibriOS.org

Официальный форум KolibriOS
Текущее время: Вт апр 24, 2018 5:34 am

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




Начать новую тему  Ответить на тему  [ 144 сообщения ]  На страницу Пред. 1 2 3 4 5 610 След.
Автор Сообщение
 Заголовок сообщения:
СообщениеДобавлено: Чт июл 11, 2013 8:11 pm 
Не в сети

Зарегистрирован: Вт апр 12, 2011 11:19 pm
Сообщения: 1090
Пишу просто графический интерфейс для редактирования конфигурационного файла программы.

_________________
я лишь учусь


Вернуться к началу
 Заголовок сообщения: Re: ряд вопросов по FASM
СообщениеДобавлено: Чт июл 11, 2013 8:36 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Пт июн 27, 2008 3:22 pm
Сообщения: 976
Ну общий смысл, думаю понятен.
1. Считал данные из файла и сохранил их в удобном виде в памяти.
2. Далее можно брать эти данные по известному адресу в памяти, и либо копировать сами данные, либо указатель на них в соответствующие элементы интерфейса.
3. После редактирования данных, все сохраняем в памяти.
4. После того как пользователь пожелал сохранить данные, пишем их обратно в файл.
Можешь посмотреть ещё MyKey, он тоже позволяет редактировать данные своего ini-файла.


Вернуться к началу
 Заголовок сообщения:
СообщениеДобавлено: Чт июл 11, 2013 9:58 pm 
Не в сети

Зарегистрирован: Вт апр 12, 2011 11:19 pm
Сообщения: 1090
Немог бы показать на примере обращение к данным через jobs?

_________________
я лишь учусь


Вернуться к началу
 Заголовок сообщения: Re: ряд вопросов по FASM
СообщениеДобавлено: Пт июл 12, 2013 5:36 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Пт июн 27, 2008 3:22 pm
Сообщения: 976
Так?

FASM
Спойлер: Показать
Код:
PATH_MAX_CHARS equ 255

struc JOB
{
  .done      db 0
  .timeH     db 0
  .timeM     db 0
  .app_path  db PATH_MAX_CHARS dup(0)
  .app_param db PATH_MAX_CHARS dup(0)
  .sizeof:
}

virtual at 0
  JOB JOB
end virtual

StartJob:
   mcall   3 ; get time
   xor   ebx, ebx
   mov   bl, al
   push   eax
   stdcall BCDToInt, ebx
   mov   dh, al
   pop   eax
   mov   bl, ah
   stdcall BCDToInt, ebx
   mov   dl, al

   movzx   ecx, byte [jobs_num]
   mov   esi, [Jobs]
  .try_next_job:
   cmp   [esi+JOB.done], 0
   jne   .skip
   cmp   dh, [esi+JOB.timeH]
   jne   .skip
   cmp   dl, [esi+JOB.timeM]
   jne   .skip

   lea   eax, [esi+JOB.app_path]
   lea   ebx, [esi+JOB.app_param]
   stdcall RunProgram, eax, ebx
   stdcall RunProgram, aNotify, eax

   mov   [esi+JOB.done], 1
   inc   [done_jobs_num]
   mov   al, [jobs_num]
   cmp   al, [done_jobs_num]
   jle   close_app
    .skip:
   add   esi, JOB.sizeof
   dec   ecx
   jnz   .try_next_job
   ret

; in: eax = job index
GetJob:
   cmp eax, [jobs_num]
   jg  .ret0
   cmp eax, 0
   jl  .ret0
   
   imul eax, JOB.sizeof
   mov  eax, [Jobs+eax]
   ret
 .ret0:
   xor eax, eax
   ret
   
;data
jobs_num      db 0  ; maximum 256 jobs
done_jobs_num db 0  ; maximum 256 jobs
Jobs         dd 0  ; Pointer to memory location of jobs list

aNotify        db  '/rd/1/@notify',0

I_END:           ; End of application code and data marker

app_path       rb  PATH_MAX_CHARS
ini_path       rb  PATH_MAX_CHARS


C++
Спойлер: Показать
Код:
#define PATH_MAX_CHARS 255

typedef struct job
{
  unsigned char done;
  unsigned char timeH;
  unsigned char timeM;
  unsigned char app_path[PATH_MAX_CHARS];
  unsigned char app_param[PATH_MAX_CHARS];
} JOB;

//data
int jobs_num = 255;
int done_jobs_num = 0;
JOB *Jobs = new JOB[jobs_num];
char *aNotify = new char[14];
strcpy(aNotify, "/rd/1/@notify\0");

void StartJob()
{
   Time dx = BCDToInt(getBCDTime());
   
   for (int i=0; i<jobs_num; i++){
      if (Jobs[i].done == 0)
         continue;
      if (Jobs[i].timeH !== dx.h)
         continue;
      if (Jobs[i].timeM !== dx.m)
         continue;
      
      char *app_path = Jobs[i].app_path;
      char *app_param = Jobs[i].app_param;
      RunProgram(app_path, app_param);
      RunProgram(aNotify, app_path);
      
      Jobs[i].done = 1;
      done_jobs_num++;
      if (jobs_num <= done_jobs_num)
         CloseApp();
   }
}

JOB GetJob(int i){
   if (i > jobs_num || i < 0)
      return NULL;
   return Jobs[i];
}

StartJob - обработка всего массива
GetJob - получение i-того элемента


Вернуться к началу
 Заголовок сообщения:
СообщениеДобавлено: Пт июл 12, 2013 9:05 pm 
Не в сети

Зарегистрирован: Вт апр 12, 2011 11:19 pm
Сообщения: 1090
Я с этим куском и пытаюсь разобраться, да ток не выходит ничего. Попробую еще, если снова ничего не выйдет, представлю свои попытки на обозрение.

_________________
я лишь учусь


Вернуться к началу
 Заголовок сообщения: Re: ряд вопросов по FASM
СообщениеДобавлено: Вс июл 14, 2013 6:51 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Пт июн 27, 2008 3:22 pm
Сообщения: 976
Не понятно что делает код или как работает?


Вернуться к началу
 Заголовок сообщения: Re: ряд вопросов по FASM
СообщениеДобавлено: Вс июл 14, 2013 8:16 pm 
Не в сети

Зарегистрирован: Вт апр 12, 2011 11:19 pm
Сообщения: 1090
Выводит какой-то мусор. Скорее всего я где-то ошибся. Исходник "своей программы" прилагаю.


Вложения:
EXAMPLE.7z [3.12 КБ]
49 скачиваний

_________________
я лишь учусь
Вернуться к началу
 Заголовок сообщения: Re: ряд вопросов по FASM
СообщениеДобавлено: Вс июл 14, 2013 9:58 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Пт июн 27, 2008 3:22 pm
Сообщения: 976
В заголовке поменяй это
Код:
 dd    0x0        ; зарезервировано

на это
Код:
 dd    app_path


Вернуться к началу
 Заголовок сообщения:
СообщениеДобавлено: Вт июл 16, 2013 9:20 pm 
Не в сети

Зарегистрирован: Вт апр 12, 2011 11:19 pm
Сообщения: 1090
Совсем уж тупой вопрос. Как изменять координату выводимого ф. 4 текста? Например мне необходимо каждую следующую строку выводить на 10 пикселей ниже.

_________________
я лишь учусь


Вернуться к началу
 Заголовок сообщения: Re: ряд вопросов по FASM
СообщениеДобавлено: Вт июл 16, 2013 9:48 pm 
Не в сети

Зарегистрирован: Ср май 18, 2005 7:27 pm
Сообщения: 1001
исходники PCIDEV глянь


Вернуться к началу
 Заголовок сообщения:
СообщениеДобавлено: Вт июл 16, 2013 10:35 pm 
Не в сети

Зарегистрирован: Вт апр 12, 2011 11:19 pm
Сообщения: 1090
Спасибо, помогло.

_________________
я лишь учусь


Вернуться к началу
 Заголовок сообщения: Re: ряд вопросов по FASM
СообщениеДобавлено: Ср июл 17, 2013 7:24 am 
Не в сети
Kernel Developer

Зарегистрирован: Вс фев 10, 2013 12:37 pm
Сообщения: 2329
punk_joker
Рекомендую все же смотреть документацию. Если у тебя есть скачанный репозиторий SVN, то в Kolibri_SVN\kernel\trunk\docs есть файлы sysfuncs.txt (английский) и sysfuncr.txt (русский). В них содержится самая актуальная версия документации API ядра, если конечно авторы правок ядра почесались над внесением изменений в документацию, а не забили болт (такое редко, но все же бывает).
Также на wiki есть http://wiki.kolibrios.org/wiki/Ru/api/kernel однако там актуальность ниже чем в репозитории SVN. В частности ф.4 про которую ты спрашивал все еще содержит старую версию.

З.Ы. Чтобы на меня вдруг не погнали сторонники wiki, сразу поясню - я не буду вносить в нее изменения, пока не будет сделана синхронизация аккаунтов с SVN. Очень знаете ли "приятно" узнавать что что-то ты можешь, например, править статьи, а что-то могут не все, например, добавлять новые страницы и картинки. Так что пока не будет этот вопрос, никаких телодвижений не будет.

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


Вернуться к началу
 Заголовок сообщения:
СообщениеДобавлено: Ср июл 17, 2013 11:27 pm 
Не в сети

Зарегистрирован: Вт апр 12, 2011 11:19 pm
Сообщения: 1090
Снова вопрос, на сей раз по поводу адресации. Ине небходимо ввводить массив строк

mov esi, [Jobs]
add esi, JOB.sizeof*0

В место нуля должен быть номер элемента массивп. Номер хранится в переменной element. Если написать add esi, JOB.sizeof*element программа компилируется но не запускается.

_________________
я лишь учусь


Вернуться к началу
 Заголовок сообщения: Re: ряд вопросов по FASM
СообщениеДобавлено: Ср июл 17, 2013 11:37 pm 
Не в сети
Kernel Developer

Зарегистрирован: Вс фев 10, 2013 12:37 pm
Сообщения: 2329
А размерность ячейки массива какая? Вообще такая конструкция подходит только для одинаковых по длине строк, поскольку в процессе работы не пересчитывается размер.

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


Вернуться к началу
 Заголовок сообщения:
СообщениеДобавлено: Ср июл 17, 2013 11:44 pm 
Не в сети

Зарегистрирован: Вт апр 12, 2011 11:19 pm
Сообщения: 1090
В JOB.sizeof хранится размер ячейки. Если я пишу add esi, JOB.sizeof*2 например, то все прекрасно работает.

_________________
я лишь учусь


Вернуться к началу
Показать сообщения за:  Поле сортировки  
Начать новую тему  Ответить на тему  [ 144 сообщения ]  На страницу Пред. 1 2 3 4 5 610 След.

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


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

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


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

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