Структура DLL Borland Pascal идентичная структуре программы,
но DLL начинается вместо заголовка program с заголовка program.
Заголовок library указывает Borland Pascal, что нужно создать вы-
полняемый файл с расширением .DLL, а не с расширением .EXE, и вы-
полняемый файл помечается как DLL.
библиотека
│
│ ┌─────────────┐ ┌───┐ ┌──────┐
└──>│ заголовок ├──>│ ; ├─┬──────────────────│ блок ├───────>
│ библиотеки │ └───┘ │ ┌──────────┐ ^ └──────┘
└─────────────┘ └──>│ оператор ├─┘
│ uses │
└──────────┘
┌─────────┐ ┌───────────────┐
заголовок ────>│ library ├──>│ идентификатор ├─────>
процедуры └─────────┘ └───────────────┘
В приведенном ниже примере приведена очень простую 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 и
B.Pascal 7 & Objects/LR - 186 -
коду инициализации библиотеки. Например:
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.