library SampleLib; uses SysUtils, GlType, Sample in 'Sample.PAS'; {$R *.RES} //Инициализация глобальных параметров библиотеки procedure AllInit(var at,adt,atfinal:PRealType;Dirs : PDirRec);export; begin ptime:=@at; //Ссылка на текущее время проекта pdtime:=@adt; //Ссылка на шаг интегрирования проекта ptimefinal:=@atfinal; //Ссылка на время остановки проекта p_DirRec:=Dirs; //Ссылка на специальные пути программы end; //Завершение работы библиотеки procedure AllDone;export; begin end; //Информационная функция библиотеки procedure GetLibInfo(Action: Integer;var BlockId, ParamId: Integer; Info: pchar);export; begin StrCopy(Info,nul); case Action of //Название страницы палитры блоков для данной библиотеки i_GetPageName : StrCopy(Info,'Пример библиотеки'); //Количество блоков в библиотеке (NBlocks) i_GetBlocksCount: BlockId := 1; //Уникальные индексы блоков, BlockId - номер блока (1..NBlocks) //Индексы блоков не должны пересекаться с индексами блоков других библиотек //i_GetHelpIndex - номера топиков в файле справки i_GetBlockIndex, i_GetHelpIndex : case BlockId of 1: ParamId := 999; end; //Типы блоков - t_din - динамический // t_fun - функциональный i_GetBlockType : ParamId := t_din; //Имена блоков (здесь совпадают с именами run-функций) i_GetBlockName, i_GetRUNName : case BlockId of 1: StrCopy(Info,'TSampleBlock'); end; //Имя файла с изображением блока или ресурса с изображением внутри библиотеки //Изображения хранятся в *.res - файле i_GetBMPName : case BlockId of 1: StrCopy(Info,'SAMPLE'); end; //Пояснения к блоку i_GetBlockHint : case BlockId of 1: StrCopy(Info,'Пример блока'); end; //Имя файла справки к библиотеке блоков i_GetHelpName : StrCopy(Info,'MBTY'); i_GetChild : ParamId := 0; //Количество входов (отрицательное число - расположение по умолчанию) i_GetInputCount : case BlockId of 1: ParamId := -1; end; //Количество выходов (отрицательное число - расположение по умолчанию) i_GetOutPutCount: case BlockId of 1: ParamId := -1; end; //Количество параметров блока (ParamId - количество) i_GetParamsCount: case BlockId of 1: ParamId := 2; end; //Название параметров i_GetParamCaption: case BlockId of 1: case ParamId of 1: StrCopy(Info,'Параметр блока'); 2: StrCopy(Info,'Параметр 2'); end; end; //Значение параметров по умолчанию i_GetParamValue : case BlockId of 1: case ParamId of 1: StrCopy(Info,'100'); 2: StrCopy(Info,'1'); end; end; //Возможные занчения для перечислений и множеств i_GetParamValues: case BlockId of 1: case ParamId of 2: StrCopy(Info,'Да:Нет'); end; end; //Типы параметров блоков: // 1 - double (realtype) // 2 - integer // 3 - TIntArray // 4 - TExtArray // 5 - PChar // 6 - string // 21 - имя файла // 30 - множество // 40 - перечисление //ParamId - номер параметра (1..N) i_GetParamType : case BlockId of 1: case ParamId of 1: StrCopy(Info,'2'); 2: StrCopy(Info,'40'); end; end; //Действия для параметров // 1 - присвоение количества входов от параметра (целое, множество, целый массив) // 2 - присвоение количества выходов от параметра // 3 - присвоение размерностей входов (целый массив) // 4 - присвоение размерностей выходов i_GetParamAct : StrCopy(Info,'0'); //Количество внешних функций библиотеки i_GetFuncsCount : BlockId := 0; end; end; EXPORTS //Общие функции библиотеки AllInit, AllDone, GetLibInfo, //Run - функция блока TSampleBlock; end.