Написание DLL
Структура DLL Borland Pascal идентичная структуре программы, но DLL начинается вместо заголовка program с заголовка program. Заголовок library указывает Borland Pascal, что нужно создать вы- полняемый файл с расширением .DLL, а не с расширением .EXE, и вы- полняемый файл помечается как DLL.
библиотека ¦ ¦ -------------- ---- ------- L-->¦ заголовок +-->¦ ; +-T------------------¦ блок +-------> ¦ библиотеки ¦ L---- ¦ ----------- ^ L------- L-------------- L-->¦ оператор +-- ¦ uses ¦ L-----------
---------- ---------------- заголовок ---->¦ library +-->¦ идентификатор +-----> процедуры L---------- L----------------
В приведенном ниже примере приведена очень простую DLL с двумя экспортируемыми функциями Min и Max, которые вычисляют наи- меньшее и наибольшее из двух целочисленных значений.
library MinMax;
function Min(X, Y: Integer): Integer; export; begin if X < Y then Min := X else Min := Y; end;
function Max(X, Y: Integer): Integer; export; begin if X > Y then Max := X else Max := Y; end;
exports Min index 1, Max index 2;
begin end.
Обратите внимание на использование для подготовки Min и Max, для экспорта ключевого слова export, и на оператор exports, ис- пользуемый для фактического экспорта двух подпрограмм, указываю- щий, для каждой из них, необязательный порядковый номер.
Хотя предыдущий пример этого не показывает, библиотека может состоять из нескольких модулей. В таких случаях исходный файл библиотеки часто сводится к оператору uses, оператору exports и коду инициализации библиотеки. Например:
library Eritors;
uses EdInit, EdInOut, EdFormat, EdPrint;
exports InitEditors index 1, DoneEditors index 2, InsertText index 3, DeleteSelection index 4, FormatSelection index 5, PrintSelection index 6, . . . SetErrorHandler index 53;
begin InitLibrary; end.