i21sys/Docu.Полезные сведения/О подсистемах.odc

О подсистемах Блэкбокса

Рекомендуется хранить файлы с исходниками модулей в соответствии с определенными правилами, иначе в процессе разработки программ Блэкбокс не сможет выполнить некоторые полезные команды (например, найти исходник и показать то место, в котором произошла аварийная остановка).

 ,    ,   .. ,         BlackBox;       : Comm, Ctl, ... Xhtml. 
(,  Comm              TCP/IP;  Text       ,   ..;  ..) 
   (,        MODULE)        ; .   . 

       5  ,        Form:


  Mod (modules)  ики , составляющих ;       ;    .odc. ,   Form  5 ,    .          .  ,  ,       ,   ..            (. ).  , ,    Cmds  Forms:        Cmds.odc   BlackBox\Forms\Mod\.

  Code (code files)  ..   или бинарники ( .ocf),          . ,  Cmds,      Cmds.odc   Mod,    Cmds.ocf   Code. 
(       (DLL)  MS Windows, ,    ,   .)

  Sym (symbol files)  ..   ( .osf),       . 
,  Cmds    Cmds.osf   Sym. 
    header-  C/C++, ,    ,   .             ,      .  ,  ,          ,    .

     ,  - ,       .    . 
      ,       , ,  ,    .        .

 Code  Sym   .       Mod,         .

  Docu (documentation)  : ,           Docu. ,  Cmds     Cmds.odc   Docu. ,      ,    ,    . 
Переводы на русский язык лежат в подпапках Docu/ru/ с теми же именами, что и английские оригиналы.
           Docu.

  Rsrc (resources)       ,      .. ,           Errors.odc   Rsrc  Dev.             . ,                .    Rsrc  ,   Docu.

 ,  ,     .     ,    .

,   ,         .

  BlackBox     Code  Sym,      .        , в которых нельзя выделить имени подсистемы.

   , подсистем  

          . ,            ,    ,   ,  .   ,        .

   ,          . 

Имя модуля  это любой идентификатор (последовательность из букв, цифр и символов подчеркивания, начинающаяся с буквы или символа подчеркивания, причем большие и малые буквы различаются, а символ подчеркивания трактуется как малая буква). 

Когда Блэкбокс встречает  при компиляции и т.п.  имя модуля (идентификатор), он пытается разбить его на две части: имя подсистемы и имя файла. 
Грубо говоря, имя подсистемы  это начало имени модуля до первого "скачка" к большим буквам после малых букв или цифр. Всё остальное  это имя файла.

Примеры:
	StdLog > имя подсистемы Std, имя файла Log;
	ПошаговаяПростые > имя подсистемы Пошаговая, имя файла Простые;
	ПодсистемаДлинноеИмяФайла > Подсистема, ДлинноеИмяФайла;
	тестТест2 > тест, Тест2;
	_123ИмяФайла > _123, ИмяФайла.
	CommObxStreamsClient  > Comm, ObxStreamsClient. 

Если не удалось разбить имя модуля таким образом (например, имя модуля проверочный123), то Блэкбокс применяет особые правила, которые будут рассмотрены отдельно.

Обычно в    и подсистем      . Среди исключений  имена подсистем i21sys, i21edu и т.п.

 
    Comm/Mod/ObxStreamsClient.odc, 
    Comm/Code/ObxStreamsClient.ocf, 
     Comm/Sym/ObxStreamsClient.ocf.

Для новой подсистемы
достаточно сначала создать папку для подсистемы (например, i21прим) и в ней папку Mod для исходников.
Например, модуль с именем i21примПростые следует хранить в файле

	i21прим\Mod\Простые.odc

При первой успешной компиляции модуля i21примПростые Блэкбокс создает еще две папки рядом с папкой Mod: папку Code для бинарников и Sym для символьных файлов. Автоматическое создание папок сопровождается информационными сообщениями вроде 
	Будет создана папка c:\BlackBox\i21прим\Code
В итоге при компиляции модуля i21примПростые будут созданы два следующих файла:
	
	i21прим\Code\Простые.ocf   (бинарник)
	i21прим\Sym\Простые.osf    (символьный файл)

Напомним, что кодовый файл  это двоичный файл с машинными командами  результат компиляции исходного текста. Он загружается в память для непосредственного выполнения.
Символьный файл содержит всю информацию о внешних связях модуля по экспорту-импорту. Он подобен header-файлам в C.
Кодовый и символьный файлы создаются компилятором автоматически, и их место в файловой системе фиксировано и однозначно определяется именем модуля.

Именно поэтому в Блэкбоксе любой успешно скомпилированный модуль становится частью системы в том смысле, что как файл с машинным кодом, так и соответствующий символьный файл немедленно становятся доступными для импорта из других модулей, вызова процедур из меню Блэкбокса и т.п.

Если модуль успешно скомпилирован и отлажен, то его исходник можно перенести в другое место  для использования откомпилированного модуля нужны только его символьный и кодовый файлы.

В папке для каждой подсистемы, кроме папок Code, Mod, Sym, обычно бывают еще папки
	Docu  документация для модулей; имя файла с документацией должно совпадать с именем файла для исходника;
	Docu/ru  переводы на русский язык документов из Docu; имя файла с документацией должно совпадать с именем файла для исходника;
	Rsrc  различные "ресурсы" данной подсистемы, например, меню, формы диалогов и т.п.

Если в имени модуля не удаётся выделить имя подсистемы (например, "Модуль1"), то Блэкбокс ожидает, что исходник будет храниться в папке Mod в основной папке (т.е. эта папка Mod будет находиться в ряду с Form, Text и т.д.), а кодовый и символьный файл будут попадать в папки Code и Sym, находящиеся на том же уровне, что и указанная папка Mod.

Если Блэкбокс был запущен в некоторой рабочей папке в серверном режиме, то создаваться все новые папки и файлы будут в рабочей папке с точно такими же именами, как и в основной.




________________
info21@inr.ac.ru
последние изменения: 2010-10-23; 2012-12-04