Кроме программ, структуру которых мы только что рассмотрели, средства языка позволяют создавать модули. В отличие от программы, модуль не может быть автономно запущен на выполнение и содержит элементы, например, переменные и подпрограммы, которые допускается использовать в программе или в других модулях. Для того чтобы можно было использовать средства модуля, его необходимо подключить, указав имя этого модуля в разделе uses. Типичными примерами модулей являются System и SysUtils, содержащие большое количество стандартных подпрограмм. Напомним, что для каждой формы приложения создается отдельный модуль. Компилятор распознает модуль по его заголовку и создает в результате своей работы не исполняемый файл (ехе), как это было для приложения, а файл модуля с расширением dcu. Модуль состоит из заголовка, в котором после ключевого слова unit указывается имя модуля, и четырех разделов: интерфейса (interface), реализации (implementation), инициализации (initialization) И деинициализации (Finalization).
Модуль имеет следующую структуру:
- 1.Unit <Имя модуля>;
- 2.// Раздел интерфейса Interface
- 3.Uses <Список модулей>;
- 4.Const <Список констант>;
- 5.Туре <Описание типов>;
- 6.Var <Объявление переменных>;
- 7.<Заголовки процедур>;
- 8.<Заголовки функций>;
- 9.// Раздел реализации
- 10.Implementation
- 11.Uses <Список модулей>;
- 12.Const <Список констант>;
- 13.Туре <Описание типов>;
- 14.Var <Объявление переменных>;
- 15.<Описание процедур>;
- 16.<Описание функций>;
17.// Раздел инициализации
- 18.Initialization
- 19.<Инструкции>
- 20.// Раздел деинициализации
- 21.Finalization
- 22.<Инструкции>
- 23.end.
В разделе интерфейса размещаются описания идентификаторов, которые должны быть доступны всем модулям и программам, использующим этот модуль и содержащим его имя в списке uses. В разделе интерфейса объявляются типы, константы, переменные и подпрограммы. При этом для подпрограмм указываются только их заголовки. Другие используемые модули указываются в списке uses. Раздел интерфейса начинается ключевым словом Interface.
В разделе реализации располагается код подпрограмм, заголовки которых были приведены в разделе интерфейса. Порядок следования подпрограмм может не совпадать с порядком расположения их заголовков, приводимых в разделе интерфейса. Кроме того, допускается оставлять в заголовке только имя подпрограммы, т. к. список параметров и тип результата функции уже были предварительно указаны. В разделе реализации можно также описывать типы, объявлять константы и переменные и описывать подпрограммы, которые используются только в этом модуле и за его пределами не видны. Раздел интерфейса начинается словом Implementation.
В разделе инициализации располагаются инструкции, выполняемые в начале работы программы, которая подключает данный модуль. Разделы инициализации модулей выполняются в том порядке, в котором они перечислены в списке раздела uses программы. Раздел инициализации начинается словом Initialization и является необязательным.
При наличии раздела инициализации в модуле можно использовать раздел деинициализации, который начинается словом Finalization и является необязательным. В этом разделе располагаются инструкции, выполняемые при завершении программы. Разделы деинициализации модулей выполняются в порядке, обратном порядку их перечисления в списке uses программы.