Page 7 of 8
Re: Названия системных функций
Posted: Mon Jan 04, 2016 9:44 am
by Pathoswithin
Ну так делайте, я в высокоуровневых языках вообще не разбираюсь. Берёте названия из KOSfuncs.inc, удаляете префикс, подфункции через точку (или не обязательно), выбираете макросы или функции и делаете KOSfuncs.h.
viewtopic.php?f=33&p=63699#p63491
Re: Названия системных функций
Posted: Mon Jan 04, 2016 12:15 pm
by ALEXS1983
Вот «набросал» как пример-черновик первых пять функций:
uKOSFunc.pas:
Spoiler:
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:
Spoiler:
#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:
Spoiler:
#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: Названия системных функций
Posted: Mon Jan 04, 2016 9:53 pm
by Pathoswithin
может оказаться что есть такая процедура в каком-то ЯВУ
И что? Процедуры не в языке, а в библиотеках. Зачем подключать библиотеку с API от другой ОС?
Re: Названия системных функций
Posted: Mon Jan 04, 2016 9:56 pm
by ALEXS1983
Pathoswithin wrote:И что? Процедуры не в языке, а в библиотеках. Зачем подключать библиотеку с API от другой ОС?
Ну да ладно об этом!...
Другие замечания будут ?
Re: Названия системных функций
Posted: Thu Jan 07, 2016 2:01 pm
by ALEXS1983
В общем, вот с 1-16 функции, паскалевский(дельфийский) модуль. Переводчик Delphi2Cpp почему-то не захотел переводить, выдаёт ошибку, я не вникал какую и почему. Пока модуль-"пустышку" буду писать на под паскаль (дельфи), после видно будет. Пока надо бы утвердить сами процедуры с входящими и возвращаемыми параметрами, реализация их потом.
Хотя как я посмотрю, никому уже никакого дела нет до этой темы!
Ну да ладно!... утвержу сам себе!...
раз никому до этого нет никакого дела!
Re: Названия системных функций
Posted: Mon Jan 11, 2016 7:29 pm
by IgorA
Предлагаю обновить документацию в файле sysfuncr.txt . Если не будет замечаний на кину прикрепленный файл на svn.
Re: Названия системных функций
Posted: Mon Jan 11, 2016 10:58 pm
by Wildwest
чего-то нехватает.......
посмотри внимательно все изменения файла хотя бы за последний год, я вот посмотрел, когда делал дайджест
http://habrahabr.ru/company/kolibrios/blog/274487/ - файл на русском обновлялся раза 2, а на английском раз 6 и в английском намного больше нового, чем в файле на русском.
Re: Названия системных функций
Posted: Tue Jan 12, 2016 12:06 pm
by Pathoswithin
За последний год оба обновлялись раз 10.
IgorA, лучше сразу заливай, чтоб было видно изменения.
Re: Названия системных функций
Posted: Tue Jan 12, 2016 2:50 pm
by IgorA
Просмотрел русский файл справки, не было функции 76.
Обновил на svn ревизия 6056. Осталось еще в английский файл те же константы всунуть.
Re: Названия системных функций
Posted: Sat Oct 20, 2018 9:27 pm
by 0CodErr
Некоторые всё-таки используют константы из файла
KOSfuncs.
Я когда-то ответил автору в ЛС про кое-какие проблемы с наименованиями, но его ответ был в духе "
я художник, я так вижу".
0CodErr wrote:...........................................................
По поводу тех констант. Я их использовать не хочу, так как некоторые из них только вносят путаницу.
Code: Select all
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?
Code: Select all
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.
Code: Select all
SF_PUT_PIXEL=1;// ; draw pixel to the window
Привычнее всё-таки
SetPixel.
Code: Select all
SSF_HEAP_INIT=11;
SSF_MEM_ALLOC=12;
SSF_MEM_FREE=13;
Я раньше тоже примерно так называл, но считаю, что логичнее будет вместо
mem сделать
Heap.
HeapCreate,
HeapAllocate,
HeapFree,
HeapReallocate.
Code: Select all
SSF_MEM_OPEN=22;// ; open named memory area
SSF_MEM_CLOSE=23;
Это очень похоже на предыдущее, вводит в заблуждение.
Лучше явно указывать
SharedMemoryOpen,
SharedMemoryClose.
Даже, казалось бы, такие "безобидные" неточности могут создать неприятные впечатления.
Можно подумать даже, что разработчики сами не очень-то разбираются.
...........................................................
Re: Названия системных функций
Posted: Sat Oct 20, 2018 10:32 pm
by Pathoswithin
А почему в ЛС? Итоговый вариант утверждали коллективно.
Re: Названия системных функций
Posted: Sat Oct 20, 2018 10:54 pm
by b00bl1k
0CodErr wrote:Некоторые всё-таки используют константы из файла KOSfuncs.
Считаю, что константы просто обязательны к использованию.
Почти по всем пунктам согласен, кроме PUT_PIXEL.
Проверял компиляцию только fasm-программ.
Re: Названия системных функций
Posted: Sat Oct 20, 2018 11:07 pm
by 0CodErr
Pathoswithin wrote:А почему в ЛС?
Там был другой предмет обсуждения.
Просто он предложил мне их использовать, а я ему назвал причины, по которым я этого делать не хочу.
b00bl1k wrote:константы просто обязательны к использованию
Ну для кого-то может и так.
Но мне вполне хватает обёрток, к тому же это гораздо удобнее, просто сравни
это
Code: Select all
mcall SF_SYSTEM, SSF_MOUSE_SETTINGS, SSSF_GET_DOUBLE_CLICK_DELAY
и это
Re: Названия системных функций
Posted: Sat Oct 20, 2018 11:11 pm
by b00bl1k
Перефразирую: использование магических чисел это плохо
Re: Названия системных функций
Posted: Mon Jul 05, 2021 5:28 am
by dunkaist
I propose to replace the word folder with dir or directory.
Even Microsoft(R) uses this term in its API:
CreateDirectoryA,
RemoveDirectoryA,
SetCurrentDirectory.
Of course, POSIX mentions directories:
mkdir,
chdir.
Yes, MenuetOS does it:
http://www.menuetos.net/sys64.txt.