Board.KolibriOS.org

Официальный форум KolibriOS
Текущее время: Пт дек 14, 2018 6:03 pm

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




Начать новую тему  Ответить на тему  [ 104 сообщения ]  На страницу Пред. 13 4 5 6 7
Автор Сообщение
 Заголовок сообщения: Re: Названия системных функций
СообщениеДобавлено: Пн янв 04, 2016 9:44 am 
Не в сети
Mentor/Kernel Developer
Аватара пользователя

Зарегистрирован: Чт мар 26, 2015 5:16 pm
Сообщения: 1257
Ну так делайте, я в высокоуровневых языках вообще не разбираюсь. Берёте названия из KOSfuncs.inc, удаляете префикс, подфункции через точку (или не обязательно), выбираете макросы или функции и делаете KOSfuncs.h.
viewtopic.php?f=33&p=63699#p63491


Вернуться к началу
 Заголовок сообщения: Re: Названия системных функций
СообщениеДобавлено: Пн янв 04, 2016 12:15 pm 
Не в сети

Зарегистрирован: Сб ноя 14, 2015 11:15 am
Сообщения: 299
Вот «набросал» как пример-черновик первых пять функций:
uKOSFunc.pas:
Спойлер: Показать
unit uKOSFunc;
interface

type TkfColor= record R,G,B:Word; end; // Будет ли такое ?!
type TkfTime= record H,M,S:Word; end; // Будет ли такое ?!
// в interface процедуры пока не вписывал!!!
implementation

//SF_TERMINATE_PROCESS=-1
procedure TerminateProcess; begin end;

//SF_CREATE_WINDOW=0 ; define and draw the window
procedure CreateWindow(
x,y:Word; SizeX,SizeY:Word;
// КООРДИНАТЫ и размер
WindowColor:Cardinal;
// mainAreaColour ?! - Цвет //или всё таки WindowColor:TkfColor
WindowStyleX,WindowStyleY:Byte;
// mainAreaType ?! в sysfuncr стиль окна вхожа в цвет * edx = 0xXYRRGGBB, где: * Y = стиль окна:
// думаю правильно делать отдельно! т.е. цвет отдельно color, стиль отдельно StyleWindow
HeadColor:Cardinal;
// цвет заголовка //или всё таки WindowColor:TkfColor и вот опять же надо разделять со стилями
HeadStyleX,HeadStyleY:Byte;
// headerType ?!
FrameColor:Cardinal
// borderColour?! цвет рамки //или всё таки FrameColor:TkfColor
); begin end;

// SF_PUT_PIXEL=1 ; draw pixel to the window
procedure PutPixel(
x,y:Word;
// координаты
Color:Cardinal
// цвет
); begin end;

//Функцию 2 предлагаю "разбить" на две функции, считаю что так будет удобней например
// в циклах ожидания нажатия GetKeyStatus и после нажатия опрос кода самой клвиши
// GetKey
//SF_GET_KEY=2 ; get code of the pressed key
Function GetKeyStatus:Boolean;begin end;
Function GetKey:Byte;begin end;

//SF_GET_SYS_TIME=3
Function GetSysTime:Cardinal;begin end;
// или GetSysTime:TkfTime; ?

//SF_DRAW_TEXT=4 ДОРАБОТАТЬ !!!
procedure DrawText(x,y:Word;Color:Cardinal;fontType:Byte;t:string);
begin end;

//SF_SLEEP=5
procedure Sleep(Value:Cardinal); begin end; // ; pause process

end.

Тем кто не умеет и не хочет читать поскакалевские файлы, вот «перевод» программой «Delphi2Cpp»,
файл uKOSFunc.h:
Спойлер: Показать
#ifndef uKOSFuncH
#define uKOSFuncH


#include <System.hpp>


struct TkfColor;
struct TkfTime;




struct TkfColor {
WORD R, G, B;
}; // Будет ли такое ?!




struct TkfTime {
WORD H, M, S;
}; // Будет ли такое ?!
// в interface процедуры пока не вписывал!!!


#endif // uKOSFuncH

...и файл файл uKOSFunc.cpp:
Спойлер: Показать
#include <vcl.h>
#pragma hdrstop

#include "uKOSFunc.h"



//SF_TERMINATE_PROCESS=-1


#include <System.hpp>


typedef unsigned char unsignedchar;
typedef unsigned int unsignedint;



void __fastcall TerminateProcess( )
{
}

//SF_CREATE_WINDOW=0 ; define and draw the window



void __fastcall CreateWindow( WORD x, WORD y, WORD SizeX, WORD SizeY,
// КООРДИНАТЫ и размер
unsignedint WindowColor,
// mainAreaColour ?! - Цвет //или всё таки WindowColor:TkfColor
unsignedchar WindowStyleX, unsignedchar WindowStyleY,
// mainAreaType ?! в sysfuncr стиль окна вхожа в цвет * edx = 0xXYRRGGBB, где: * Y = стиль окна:
// думаю правильно делать отдельно! т.е. цвет отдельно color, стиль отдельно StyleWindow
unsignedint HeadColor,
// цвет заголовка //или всё таки WindowColor:TkfColor и вот опять же надо разделять со стилями
unsignedchar HeadStyleX, unsignedchar HeadStyleY,
// headerType ?!
unsignedint FrameColor
// borderColour?! цвет рамки //или всё таки FrameColor:TkfColor
)
{
}

// SF_PUT_PIXEL=1 ; draw pixel to the window



void __fastcall PutPixel( WORD x, WORD y,
// координаты
unsignedint Color
// цвет
)
{
}

//Функцию 2 предлагаю "разбить" на две функции, считаю что так будет удобней например
// в циклах ожидания нажатия GetKeyStatus и после нажатия опрос кода самой клвиши
// GetKey
//SF_GET_KEY=2 ; get code of the pressed key


bool __fastcall GetKeyStatus( )
{
bool result = false;
return result;
}


unsignedchar __fastcall GetKey( )
{
unsignedchar result = 0;
return result;
}

//SF_GET_SYS_TIME=3



unsignedint __fastcall GetSysTime( )
{
unsignedint result = 0;
return result;
}
// или GetSysTime:TkfTime; ?

//SF_DRAW_TEXT=4 ДОРАБОТАТЬ !!!


void __fastcall DrawText( WORD x, WORD y, unsignedint Color, unsignedchar fontType, String t )
{
}

//SF_SLEEP=5



void __fastcall Sleep( unsignedint Value )
{
} // ; pause process


Возникающие вопросы и проблемы:
* «CreateWindow» может оказаться что есть такая процедура в каком-то ЯВУ например в том же BS6 помоему она есть. Думаю нужны приставки к имени процедур. Думаю, сами приставки должны быть в верблюддауне, например «kCreateWindow” или «kpCreateWindow” или «kfCreateWindow”, не очень то важно какая именно приставка, но должна быть короткой из одного или двух символов.

* Параметры процедур должны быть разнотипные?... Byte, Word, DWord ?... или все параметры DWord ? Если разнотипные то, какие иммено типы должны быть? Byte, Word, DWord ? Хватит ? Или еще какие-то должны применяться ?

* Будем ли утверждать свои типы? Например type TkfColor= record R,G,B:Word; end; ?

* Нужно внимательно изучить и обработать функцию 4, procedure DrawText. К слову. в файле kosSyst.cpp их две: void kos_WriteTextToWindow(Word x,Word y, Byte fontType, Dword textColour, char *textPtr, Dword textLen) и void kos_WriteTextToWindow_internal (Dword pos, Dword font, const char *textPtr, Dword textLen )


Вернуться к началу
 Заголовок сообщения: Re: Названия системных функций
СообщениеДобавлено: Пн янв 04, 2016 9:53 pm 
Не в сети
Mentor/Kernel Developer
Аватара пользователя

Зарегистрирован: Чт мар 26, 2015 5:16 pm
Сообщения: 1257
Цитата:
может оказаться что есть такая процедура в каком-то ЯВУ
И что? Процедуры не в языке, а в библиотеках. Зачем подключать библиотеку с API от другой ОС?


Вернуться к началу
 Заголовок сообщения: Re: Названия системных функций
СообщениеДобавлено: Пн янв 04, 2016 9:56 pm 
Не в сети

Зарегистрирован: Сб ноя 14, 2015 11:15 am
Сообщения: 299
Pathoswithin писал(а):
И что? Процедуры не в языке, а в библиотеках. Зачем подключать библиотеку с API от другой ОС?

Ну да ладно об этом!...
Другие замечания будут ?


Вернуться к началу
 Заголовок сообщения: Re: Названия системных функций
СообщениеДобавлено: Чт янв 07, 2016 2:01 pm 
Не в сети

Зарегистрирован: Сб ноя 14, 2015 11:15 am
Сообщения: 299
В общем, вот с 1-16 функции, паскалевский(дельфийский) модуль. Переводчик Delphi2Cpp почему-то не захотел переводить, выдаёт ошибку, я не вникал какую и почему. Пока модуль-"пустышку" буду писать на под паскаль (дельфи), после видно будет. Пока надо бы утвердить сами процедуры с входящими и возвращаемыми параметрами, реализация их потом.
Хотя как я посмотрю, никому уже никакого дела нет до этой темы! :-(
Ну да ладно!... утвержу сам себе!... :-) раз никому до этого нет никакого дела! :-(

Вложение:
uKOSFunc.pas [6.73 КБ]
88 скачиваний


Вернуться к началу
 Заголовок сообщения: Re: Названия системных функций
СообщениеДобавлено: Пн янв 11, 2016 7:29 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Пн окт 27, 2008 10:10 pm
Сообщения: 783
Предлагаю обновить документацию в файле sysfuncr.txt . Если не будет замечаний на кину прикрепленный файл на svn.


Вложения:
sysfuncr.txt [297.84 КБ]
91 скачивание
Вернуться к началу
 Заголовок сообщения: Re: Названия системных функций
СообщениеДобавлено: Пн янв 11, 2016 10:58 pm 
Не в сети

Зарегистрирован: Ср май 18, 2005 7:27 pm
Сообщения: 1001
чего-то нехватает.......

посмотри внимательно все изменения файла хотя бы за последний год, я вот посмотрел, когда делал дайджест http://habrahabr.ru/company/kolibrios/blog/274487/ - файл на русском обновлялся раза 2, а на английском раз 6 и в английском намного больше нового, чем в файле на русском.


Вернуться к началу
 Заголовок сообщения: Re: Названия системных функций
СообщениеДобавлено: Вт янв 12, 2016 12:06 pm 
Не в сети
Mentor/Kernel Developer
Аватара пользователя

Зарегистрирован: Чт мар 26, 2015 5:16 pm
Сообщения: 1257
За последний год оба обновлялись раз 10.
IgorA, лучше сразу заливай, чтоб было видно изменения.


Вернуться к началу
 Заголовок сообщения: Re: Названия системных функций
СообщениеДобавлено: Вт янв 12, 2016 2:50 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Пн окт 27, 2008 10:10 pm
Сообщения: 783
Просмотрел русский файл справки, не было функции 76.
Обновил на svn ревизия 6056. Осталось еще в английский файл те же константы всунуть.


Вернуться к началу
 Заголовок сообщения: Re: Названия системных функций
СообщениеДобавлено: Сб окт 20, 2018 9:27 pm 
Не в сети

Зарегистрирован: Вс окт 30, 2011 6:43 pm
Сообщения: 1499
Некоторые всё-таки используют константы из файла KOSfuncs.
Я когда-то ответил автору в ЛС про кое-какие проблемы с наименованиями, но его ответ был в духе "я художник, я так вижу".
0CodErr писал(а):
...........................................................
По поводу тех констант. Я их использовать не хочу, так как некоторые из них только вносят путаницу.
Код:
SF_TERMINATE_PROCESS
SSF_TERMINATE_THREAD=2;//       ; terminate process/thread by the slot number
SSF_TERMINATE_THREAD_ID=18;//    ; Terminate process/thread by the ID
В одном случае PROCESS, в другом THREAD.
В одном случае суффикс ID, почему тогда в другом не SLOT?
Код:
    SF_DRAW_TEXT=4;
    SF_DRAW_RECT=13;//         ; draw rectangle to the window
    SF_DRAW_LINE=38;
    SF_DRAW_NUMBER=47;//       ; draw number to the window
    SF_PUT_IMAGE_EXT=65;//     ; draw image with palette to the window
    SF_PUT_IMAGE=7;//          ; draw image to the window
Везде DRAW, а в 2-ух последних внезапно PUT.
Код:
    SF_PUT_PIXEL=1;//          ; draw pixel to the window
Привычнее всё-таки SetPixel.
Код:
      SSF_HEAP_INIT=11;
      SSF_MEM_ALLOC=12;
      SSF_MEM_FREE=13;
Я раньше тоже примерно так называл, но считаю, что логичнее будет вместо mem сделать Heap. HeapCreate, HeapAllocate, HeapFree, HeapReallocate.
Код:
SSF_MEM_OPEN=22;//       ; open named memory area
SSF_MEM_CLOSE=23;
Это очень похоже на предыдущее, вводит в заблуждение.
Лучше явно указывать SharedMemoryOpen, SharedMemoryClose.

Даже, казалось бы, такие "безобидные" неточности могут создать неприятные впечатления.
Можно подумать даже, что разработчики сами не очень-то разбираются.
...........................................................


Вернуться к началу
 Заголовок сообщения: Re: Названия системных функций
СообщениеДобавлено: Сб окт 20, 2018 10:32 pm 
Не в сети
Mentor/Kernel Developer
Аватара пользователя

Зарегистрирован: Чт мар 26, 2015 5:16 pm
Сообщения: 1257
А почему в ЛС? Итоговый вариант утверждали коллективно.


Вернуться к началу
 Заголовок сообщения: Re: Названия системных функций
СообщениеДобавлено: Сб окт 20, 2018 10:54 pm 
Не в сети

Зарегистрирован: Вт июн 24, 2008 11:12 pm
Сообщения: 64
0CodErr писал(а):
Некоторые всё-таки используют константы из файла KOSfuncs.
Считаю, что константы просто обязательны к использованию.

Почти по всем пунктам согласен, кроме PUT_PIXEL.

Проверял компиляцию только fasm-программ.


Вложения:
kosfuncs.diff [29.4 КБ]
15 скачиваний
Вернуться к началу
 Заголовок сообщения: Re: Названия системных функций
СообщениеДобавлено: Сб окт 20, 2018 11:07 pm 
Не в сети

Зарегистрирован: Вс окт 30, 2011 6:43 pm
Сообщения: 1499
Pathoswithin писал(а):
А почему в ЛС?
Там был другой предмет обсуждения.
Просто он предложил мне их использовать, а я ему назвал причины, по которым я этого делать не хочу.
b00bl1k писал(а):
константы просто обязательны к использованию
Ну для кого-то может и так.
Но мне вполне хватает обёрток, к тому же это гораздо удобнее, просто сравни
это
Код:
mcall SF_SYSTEM, SSF_MOUSE_SETTINGS, SSSF_GET_DOUBLE_CLICK_DELAY
и это
Код:
Invoke GetDoubleClickTime


Вернуться к началу
 Заголовок сообщения: Re: Названия системных функций
СообщениеДобавлено: Сб окт 20, 2018 11:11 pm 
Не в сети

Зарегистрирован: Вт июн 24, 2008 11:12 pm
Сообщения: 64
Перефразирую: использование магических чисел это плохо


Вернуться к началу
Показать сообщения за:  Поле сортировки  
Начать новую тему  Ответить на тему  [ 104 сообщения ]  На страницу Пред. 13 4 5 6 7

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


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

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


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

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