Модуль начинается с ключевого слова unit, после которого пишется имя модуля. Оно совпадает с именем файла, в которым вы сохранили свой модуль.
Текст модуля состоит из двух основных разделов: interface— открытый(внешний) интерфейс модуля, и implementation—реализация модуля. Все, что помещается непосредственно в раздел interface(типы, переменные, константы, функции, процедуры), может быть использовано другими модулями программы. Все, что помещается в раздел implementation— внутреннее дело модуля. Внешние модули не могут видеть типы, переменные, константы, функции и процедуры, размещенные в разделе реализации.
В разделе interfaceпосле предложения uses,содержащего список подключаемых модулей, вы можете видеть заготовку объявления класса вашей формы, подготовленную Delphi. Имя класса вашей формы -- TForml.Класс содержит два раздела:
private— закрытый раздел класса, и public— открытый раздел класса. То, что вы или Delphi объявите в разделе public,будет доступно для других классов и модулей. То, что объявлено в разделе private,доступно только в пределах данного модуля. (подробнее о спецификаторах доступа позже)
После завершения объявления класса формы вы можете видеть строки
var
Forml: TForml;
Это объявляется переменная Formlкласса TForml, т.е. объявляется ваша
форма как объекта класса TForml. Затем следует пока пустой раздел реализации implementation.Раздел implementation включает в себя реализацию модуля. Основное тело модуля составляет коды, реализующие объявленные функции и процедуры.
В данном примере раздел implementation содержит директиву {$R} Директива компилятора {$R} указывает файлы ресурсов (.DFM, .RES), которые должны быть включены в выполняемый модуль или в библиотеку. Указанный файл должен быть файлом ресурсов Windows. По умолчанию расширение файлов ресурсов – файл с расширением .RES. В процессе компоновки компилированной программы или библиотеки файлы, указанные в директивах {$R}, копируются в выполняемый модуль. Компоновщик Delphi ищет эти файлы в том каталоге, в котором расположен модуль, содержащий директиву {$R}.
При генерации кода модуля, содержащего форму, Delphi автоматически включает в файл .pas директиву {$R *.DFM}, обеспечивающую компоновку файлов ресурсов форм. Эту директиву нельзя удалять из текста модуля, так как в противном случае загрузочный модуль не будет создан и сгенерируется исключение EResNotFound.
Существуют еще 2 необязательных раздела: initialization – включает в себя операторы, выполняющиеся только 1 раз при первом обращении программы к данному модулю. В этом разделе могут быть операторы, производящие начальную настройку модуля. Если в программе есть несколько модулей, содержащих разделы initialization, то последовательность выполнения операторов этих разделов определяется последовательностью указания модулей в операторах uses. Например если в головной программе имеется оператор uses unit1,unit2, unit3 , а модуле init1 имеется оператор uses unit3, то последовательность выполнения разделов initialization будет следующей: unit3, unit1,unit2.
Пример применения такого раздела может быть перенос кода головной программы
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.CreateForm(TForm2, Form2);
Application.Run;
В раздел initialization какого-либо из объявленных модулей.
И второй необязательный раздел – finalization – включает в себя операторы, которые выполняются только один раз при завершении работы программы: нормальном или аварийном. В нем могут помещаться операторы по удалению временных файлов, освобождению ресурсов памяти.