Логически обособленные группы процедур и функций чрезвычайно удобно объединять в специализированные библиотеки — модули. Каждый модуль – это отдельный файл, содержащий исходный код и имеющий расширение .pas. Каждый модуль редактируется и компилируется отдельно.
Каждый модуль заканчивается зарезервированным словомend (конец) с точкой.
Приведем общую структуру программного модуля.
Модуль состоит из:
- заголовка,
- секция интерфейса,
- секция реализации,
- секция инициализации (может отсутствовать),
- секция завершения (может отсутствовать).
unit <имя модуля>; //Заголовок модуля {$<директивы>} //Директивы компилятора interface //Интерфейсная часть uses <имя>, ..., <имя>; //Подключение модулей const ... ; //Константы type ... ; //Типы данныхvar ... ; //Переменные procedure <имя> (<параметры>); //Заголовки процедур function <имя> (<параметры>): <тип>; //Заголовки функций implementation //Часть реализации uses <имя>, ..., <имя>; //Подключение модулей const ... ; //Константы type ... ; //Типы данных var ... ; //Переменные procedure <имя>; begin ... end; //Реализация процедур function <имя>; begin ... end; //Реализация функций initialization <операторы> //Код инициализацииfinalization <операторы> //Код завершенияend. |
После слова unit записывается имя модуля. Оно должно совпадать с именем файла, в котором находится исходный текст модуля. Например, если файл называется MathLib.pas, то модуль должен иметь имя MathLib. Заголовок модуля формируется автоматически при сохранении файла на диске, поэтому его не следует изменять вручную. Чтобы дать модулю другой заголовок, просто сохраните его на диске под другим именем.
В секции interface описываются глобальныеданные, процедуры и функции, доступные для использования в основной программе и других модулях.
В секции implementation реализуется программный код глобальных процедур и функций и описываются локальныеданные, процедуры и функции, недоступные основной программе и другим модулям.
Секция initialization является необязательной. Она состоит из операторов и выполняется автоматически непосредственно перед запуском основной программы. Блоки инициализации подключенных к программе модулей выполняются в том порядке, в котором они упоминаются в секции uses.
Секция finalization тоже является необязательной. Она состоит из операторов и выполняется автоматически непосредственно после завершения основной программы. Блоки завершения подключенных к программе модулей выполняются в порядке, обратном порядку подключения модулей в секции uses.
Если модуль не нуждается в инициализации и завершении, секции initialization и finalization можно опустить.