В связи с предстоящим капитальным переписыванием KFM (Kolibri File Manager - если кто не знает, то его уши торчат из OpenDialog и Box_Lib, компонента FileBrowser соответственно) я планирую если не все операции с дисковой подсистемой, то хотя бы опции копирования переместить в такую библиотеку. Зачем по идее понятно - чтобы авторы всех других программы, которым позарез нужно скопировать файл или папку, не мучались изобретая свои велосипеды. Процедура будет настраиваемой, чтобы не было проблем с монопольным захватом файловых устройств на долгое время и нехваткой оперативной памяти или ее избыточным использованием как в случае с KFM сейчас (это ускоряет копирование, но ухудшает время отклика и монопольно захватывает дисковое устройство на длительное время). При использовании обращения всех программ в системе через эту библиотеку (разумеется их придется подкорректировать) можно получить более лучшее квази-параллельное распределение обращений к дисковой подсистеме, чем это есть сейчас - при этом переписывание ядра не потребуется.
Если у кого-нибудь есть более лучшие идеи (реальные, а не фантастические) и\или дополнения - готов их выслушать и учесть.
File_Lib.obj - библиотека работы с файловой системой.
если возможно и рационально реализовать именно в этой библиотеке, то не помешали бы стандартные ф-ции ввода/вывода Си (fopen, fclose, fprintf, ...). можете считать это хотелкой...
Дело в том, что я не знаком с функциями, которые в Си - если есть подробное разжеванное описание, то можно учесть пожелание. Библиотека будет подключаться и вызываться подобно Box_Lib, так что проблем с использованием в ЯВУ не должно быть по идее. В самом ядре Колибри по идее нет такого явления как открыть и закрыть файл.
З.Ы. Хотелки именно в таком ключе высказывать вполне правильно.
З.Ы. Хотелки именно в таком ключе высказывать вполне правильно.
Оказалось, что толковых статей (на русском языке) по этой теме не так уж и много. Вот несколько, с которыми ИМХО следует ознакомиться...
http://www.borland-academy.ru/courses/c ... 03.03.html
http://ru.wikipedia.org/wiki/Файловый_в ... в_языке_Си
http://ru.wikipedia.org/wiki/Stdio.h
http://mymanual.narod.ru/programmist/cp ... gl_4_1.htm
Структура FILE описана следующим образом (взято отсюда http://tigcc.ticalc.org/doc/stdio.html):
Функция fprintf подобна printf из console.obj. Описание:
http://ru.wikipedia.org/wiki/Printf
http://www.borland-academy.ru/courses/c ... 03.03.html
http://ru.wikipedia.org/wiki/Файловый_в ... в_языке_Си
http://ru.wikipedia.org/wiki/Stdio.h
http://mymanual.narod.ru/programmist/cp ... gl_4_1.htm
Структура FILE описана следующим образом (взято отсюда http://tigcc.ticalc.org/doc/stdio.html):
Code: Select all
typedef struct { char *fpos; /* Current position of file pointer (absolute address) */
void *base; /* Pointer to the base of the file */
unsigned short handle; /* File handle */
short flags; /* Flags (see FileFlags) */
short unget; /* 1-byte buffer for ungetc (b15=1 if non-empty) */
unsigned long alloc; /* Number of currently allocated bytes for the file */
unsigned short buffincrement; /* Number of bytes allocated at once */
} FILE;
Функция fprintf подобна printf из console.obj. Описание:
http://ru.wikipedia.org/wiki/Printf
Есть предложение добавить твои функции в libio вместо создания новой библиотеки. Больше по существу пока что ничего.
in code we trust
Предложение интересное, но есть пара моментов которые меня не воодушевляют. Во-первых, документации даже пользовательской нет (исходники типа Тинипада - не самая понятная документация, помнится я очень долго разбирался с libini), во-вторых стиль кода очень сильно отличается, что опять же затрудняет мое понимание. Я подумаю, спасибо за предложение.
Набросал немного документации по libio. Пока что только на английском, так как легче (практически вся информация взята из комментариев в исходном коде, которые таки на английском). Лежит тут: http://wiki.kolibrios.org/wiki/Libs-dev.
in code we trust
Извините за нескромный вопрос (да, я ленивый человек и в коде мне лазить неохота), но:
- А функции библиотеки libio типа stdcall? Или параметры передаются через регистры?
- А функции библиотеки libio типа stdcall? Или параметры передаются через регистры?
Они stdcall. Из описаний видно, что используется макрос proc, а в конце статьи есть пример.
in code we trust
спасибо. до конца-то я и не дочитал а насчёт proc я мог и ошибаться.
Подправил немного документацию, перевёл на русский. Читайте на здоровье
in code we trust
Давно ждал документацию. Во многом разобрался сам (на исходниках), но это же не дело, когда для использования библиотеки нужно разбираться в её исходниках. Теперь прикладникам будет легче писать программы. Спасибо Майк!
mike.dld
Спасибо.
Спасибо.
mike.dld
Спасибо!
Спасибо!
Who is online
Users browsing this forum: No registered users and 1 guest