Общая структура модуля

Каждый модуль в общем случае имеет следующую структуру:

unit <имя модуля>:

interface // Открытый интерфейс модуля

{Сюда могут помещаться списки подключаемых модулей, объявления типов, констант, переменных, функций и процедур, к которым будет доступ из других модулей}

implementation // Реализация модуля

{Сюда могут помещаться списки подключаемых модулей, объявления типов, констант, переменных, к которым не будет доступа из других модулей. Тут же должны быть реализации всех объявленных в разделе interface функций и процедур, а также могут быть реализации любых дополнительных, не объявленных ранее функций и процедур.}

initialization {не обязательный}

<0ператоры, выполняемые один раз при первом обращении к модулю>

finalization {не обязательный}

<0ператоры, выполняемые при любом завершении работы модуля>

end.

Рассмотрим теперь, как выглядят тексты модулей. Далее приведен текст мо­дуля с пустой формой. Подробные комментарии в этом тексте поясняют, куда и что в этот код можно добавлять:

unit Unitl;

interface // Открытый интерфейс модуля

uses {Список подключаемых модулей}

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs;

type {Объявление класса формы}

TForml = class(TForm)

private // Закрытый раздел класса

{ Private declarations }

{Объявления переменных, функций и процедур, включаемых в класс формы, но не доступных для других модулей}

public // Открытый раздел класса

{ Public declarations }

{Объявления переменных, функций и процедур, включаемых в класс формы и доступных для других модулей}

end;

var

Forml: TForml;

{Объявления типов, констант, переменных, функций и процедур, к которым будет доступ из других модулей, но которые не включаются в класс формы}

implementation // Реализация модуля

{Сюда могут помещаться предложения uses, объявления типов, констант, переменных, к которым не будет доступа из других модулей. Тут же должны быть реализации всех объявленных в разделе interface функций и процедур, а также могут быть реализации любых дополнительных, не объявленных ранее функций и процедур.}

{$R *.dfm}

end.

Модуль начинается с ключевого слова unit, после которого указывается имя модуля. Оно совпадает с именем файла, в котором был сохранен модуль. По умолчанию для первого модуля используется имя Unit1, для второго — Unit2 и т. д.

СОВЕТ Если в вашем приложении несколько модулей, сохраняйте их файлы с осмысленными именами, изменяя тем самым имена модулей, заданные Delphi no умолчанию.

Текст модуля состоит из двух основных разделов: interfасе — открытый ин­терфейс модуля и implementation реализация модуля. Все, что помещается непосредственно в раздел interfасе (типы, переменные, константы, функции, процедуры), может быть использовано другими модулями программы. Все, что помещается в раздел implementation, является внутренним делом модуля. Внешние модули не могут видеть типы, переменные, константы, функции и процедуры, размещенные в разделе реализации.

В разделе interface после предложения uses, содержащего список подключа­емых модулей, располагается заготовка объявления класса формы, подготовленная Delphi. Имя класса формы — TForml. Класс содержит два раздела: private закрытый раздел класса и public — открытый раздел класса. То, что объявлено в разделе publiс, будет доступно для других классов и модулей. То, что объявлено в разделе private, доступно только в пределах данного модуля.

За объявлением класса формы следуют строки

var

Forml: TForml;

Таким образом объявляется переменная Form1 класса TForm1.

Затем следует пока пустой раздел реализации implementation, в котором со­держится только директива компилятора {$R *.dfm}, обеспечивающая компо­новку файлов ресурсов форм

ВНИМАНИЕДирективу {$R *.dfm} нельзя удалять из текста модуля, так как в противном случае загрузочный модуль не будет создан и будет сгенерировано исключение EResNotFound.

ПРИМЕЧАНИЕКроме разделов interface и implementation, можно добавить в модуль еще два раздела: initialization и finalization.