OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Вторник, 23 Апрель, 2024 23:34

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 11 ] 
Автор Сообщение
 Заголовок сообщения: Модуль Services & HostMenus
СообщениеДобавлено: Понедельник, 19 Октябрь, 2009 13:46 

Зарегистрирован: Среда, 31 Октябрь, 2007 18:58
Сообщения: 252
Откуда: Austria, Bruck
Возникла у меня задача написать небольшой сервер. Его задача, принимать данные по сети и сохранять их в БД, абсолютно не требует визуальной формы. Казалось мне: собери свое приложение без использования всего ББ. А вот и нет, не получается. И затык то простой: Services реализуется в HostMenu. А он за собой тащит чуть не весь фреймворк.
Получается надо писать модуль HostApp и в нем реализовывать все необходимые компоненты.

Или я чего-то не понимаю?

ЗЫ А все таки, не хватает в каркасе некого типа\ов Приложение. Как его правильно описать? Есть у кого идеи?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Модуль Services & HostMenus
СообщениеДобавлено: Понедельник, 19 Октябрь, 2009 13:56 

Зарегистрирован: Суббота, 26 Ноябрь, 2005 10:37
Сообщения: 875
Откуда: Россия, Владивосток
hothing писал(а):
ЗЫ А все таки, не хватает в каркасе некого типа\ов Приложение. Как его правильно описать? Есть у кого идеи?


Я бы сказал что подсистеме Host не хватает структурированности. И Kernelу пожалуй. Нужно полностью разнести общесистемные вещи и GUI. Тогда и выделение "разных типов приложений" будет не сильно актуально


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Модуль Services & HostMenus
СообщениеДобавлено: Понедельник, 19 Октябрь, 2009 16:11 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
Services абсолютно самодостаточен.

Поставьте в главной процедуре приложения LOOP Services.actionHook.Loop END - и всё. Этот хук порождается прямо внутри Services.

Ну, надо будет разбавить такой жадный цикл WinApi.Sleep(1) "по вкусу" (обычно от нагрузки; если нагрузка есть, то не спим, если пропала, то разбавляем).


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Модуль Services & HostMenus
СообщениеДобавлено: Понедельник, 19 Октябрь, 2009 16:48 

Зарегистрирован: Понедельник, 28 Ноябрь, 2005 10:28
Сообщения: 1428
А смысл в таком использовании Services?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Модуль Services & HostMenus
СообщениеДобавлено: Понедельник, 19 Октябрь, 2009 16:50 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
Ну, я так понимаю, человеку удобно использовать его как карусель задач.

Хотя лучше делать это напрямую.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Модуль Services & HostMenus
СообщениеДобавлено: Понедельник, 19 Октябрь, 2009 19:36 

Зарегистрирован: Среда, 31 Октябрь, 2007 18:58
Сообщения: 252
Откуда: Austria, Bruck
Илья, спасибо, за емкий ответ. Да, конечно нужно сделать цикл. У меня уже шаблон мышления.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Модуль Services & HostMenus
СообщениеДобавлено: Вторник, 20 Октябрь, 2009 20:05 
Модератор
Аватара пользователя

Зарегистрирован: Среда, 16 Ноябрь, 2005 00:53
Сообщения: 4625
Откуда: Россия, Орёл
Реализация Actions через виндовый таймер (Как пример)
Код:
MODULE ...TimerHook;

   IMPORT
      Out := ConsoleOut,
      Services, SYSTEM, W := WinApi;
   
   VAR
      id: INTEGER;

   PROCEDURE TimerProc (hwnd: W.HWND; uMsg, idEvent, dwTimer: INTEGER);
   BEGIN
      Services.actionHook.Step
   END TimerProc;

   PROCEDURE InstallTimer;
   BEGIN
      id := W.SetTimer(0, 0, 1, SYSTEM.VAL(W.TIMERPROC, SYSTEM.ADR(TimerProc)))
   END InstallTimer;
   
   PROCEDURE UninstallTimer;
      VAR   res: INTEGER;
   BEGIN
      IF id # 0 THEN
         res := W.KillTimer(0, id); id := 0
      END
   END UninstallTimer;
   
BEGIN
   InstallTimer;
   IF id = 0 THEN
      Out.Open; Out.String("...TimerHook.InstallTimer failed"); Out.Ln
   END
CLOSE
   UninstallTimer
END ...TimerHook.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Модуль Services & HostMenus
СообщениеДобавлено: Вторник, 20 Октябрь, 2009 21:23 
Аватара пользователя

Зарегистрирован: Вторник, 19 Сентябрь, 2006 21:54
Сообщения: 2449
Откуда: Россия, Томск
Евгений Темиргалеев писал(а):
Реализация Actions через виндовый таймер
Однако, для callback'а надо так:
PROCEDURE [ccall] TimerProc (hwnd: W.HWND; uMsg, idEvent, dwTimer: INTEGER);


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Модуль Services & HostMenus
СообщениеДобавлено: Вторник, 20 Октябрь, 2009 21:29 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
Ни в коем случае, это ж WinApi-callback, а не Юникс и не библиотека какая левая.
Соглашения вызова - WinApi. Как и в ББ.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Модуль Services & HostMenus
СообщениеДобавлено: Вторник, 20 Октябрь, 2009 22:09 

Зарегистрирован: Понедельник, 28 Ноябрь, 2005 10:28
Сообщения: 1428
Все равно цикл надо делать.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Модуль Services & HostMenus
СообщениеДобавлено: Среда, 21 Октябрь, 2009 00:56 

Зарегистрирован: Среда, 31 Октябрь, 2007 18:58
Сообщения: 252
Откуда: Austria, Bruck
Спасибо всем зА ответы. Много полезного.
Хотя, в моем случае, стараюсь избежать любых ОС-зависимых процедур, т.к. в дальнейшем код должен работать и в других ОС.


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

Часовой пояс: UTC + 3 часа


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

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


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

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2024, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB