spacer
   
АНАТОМИЯ модулей DELPHI    

Written   05/11/1999 

Перевод Руденко Е.В.   janerev@hotmale.ru    март 2001 года


Delphi для начинающих:
Interface, Implementation, Initialization, Finalization, Uses и другие  "смешные" слова!

Если вы мечтаете стать хорошим программистом на  Delphi,  то такие слова как     interface, implementation, uses обязательно должны быть в вашей базе знаний.

   Delphi проекты


Когда мы создаем приложение  Delphi , то можем начать работу с пустого проекта, существующего проекта или с одного из существующих  в Delphi шаблонов. Проект включает все файлы, необходимые для создания законченного приложения.
Диалоговая форма, которая появляется , когда мы выбираем пункт меню View-Project Manager дает нам  доступ к формам и модулям нашего проекта.
Проект содержит единственный файл проекта (.dpr), в котором  перечислены все формы и модули проекта . Мы можем просматривать и даже редактировать файл проекта (давайте называть его Модулем Проекта) выбором в меню Delphi пункта  View - Project Source. Поскольку  Delphi сама поддерживает файл проекта, нам нет необходимости редактировать его вручную и , обычно, не рекомендуется это делать начинающим программистам.

   Delphi Модули
Как мы теперь знаем, формы - видимая часть большинства проектов Delphi . Каждая форма в проекте  Delphi имеет связанный с ней модуль. Модуль содержит исходный код для любого События, связанного с данной формой или для Компонентов, на ней расположенных.

Поскольку модуль содержит код вашего проекта, модули - основа программирования на Delphi. В общем, модуль -  это коллекция  констант, переменных, типов ,  процедур и функций, которые могут быть использованы подобными приложениями.

Каждый раз, когда мы создаем новую форму (.dfm файл), Delphi автоматически создает связанный с ней модуль  (.pas файл) , давайте назовем его Form Unit. Однако, могут существовать модули, не связанные с формами. Модуль кода (Code Unit) содержит код, который вызывается из других модулей проекта. Когда вы начнете создавать библиотеку полезных подпрограмм, то вероятнее всего сохраните их в модуле кода. Для добавления нового модуля кода в Delphi выберите в Меню  пункт File-New ... Unit.

   Анатомия
Когда мы создаем модуль (форму или модуль кода) Delphi добавляет следующие куски кода автоматически:  заголовок модуля, секцию interface и  секцию implementation . Существует также еще две  секции: initialization и  finalization.

Как вы видите , модули имеют предопределенный формат, для того , чтобы компилятор мог прочитать код и скомпилировать его.

//шаблон модуля формы
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, 
Graphics, Controls, Forms, Dialogs;
type
  TForm1 = class(TForm)
  private
    { Private declarations }
  public
    { Public declarations }
  end;
var
  Form1: TForm1;
implementation
{$R *.DFM}
end. //это конец модуля
//шаблон модуля кода
unit Unit2;
interface
{здесь располагается код секции interface }
implementation
{здесь располагается код секции implementation }
end. //это конец модуля

Заголовок модуля начинается с зарезервированного слова  unit, с последующим именем модуля. Имя модуля используется в других модулях при необходимости ссылки на него.

   Interface секция
Эта секция содержит пункт uses, в котором перечислены другие модули (модули кода или форм) , которые будут использоваться. В модули форм  Delphi автоматически добавляет ссылку на стандартные модули , например, Windows, Messages, и т.д. Когда вы добавляете на форму новые компоненты, Delphi добавляет соответствующие имена в список  uses. Однако, Delphi не добавляет пункт  uses в  interface секцию модулей кода - мы должны делать это вручную.

В  interface секции модуля  мы можем декларировать глобальные переменные, типы данных, переменные, процедуры и функции. 

Не сомневайтесь, что  Delphi создаст Модуль формы , когда вы создадите саму форму. Типы данных формы, переменные формы и заголовки Событий декларируются в   interface секции. Interface секция заканчивается резервным словом  implementation.

   Implementation секция
Implementation секция модуля - это секция , в которой содержится собственно код модуля. В секции  implementation  могут быть свои  собственные декларации, хотя эти  декларации уже будут недоступны другим модулям. Любые объекты  Delphi , которые продекларированы здесь, будут доступны в пределах данного модуля. 

   Initialization и Finalization секции

unit UnitName:
....
initialization
 {здесь располагается код инициализации}
finalization
 {здесь располагается код финализации}
end.

Эти две секции являются необязательными и они не создаются автоматически при создании модуля. Если вам необходимо проинициализировать какие то переменные, то вы можете добавить код инициализации в секцию  initialization модуля. Когда приложение использует данный модуль, то код в секции initialization выполняется перед запуском любого другого кода модуля.
Если вам необходимо провести любую очистку после завершения работы приложения, такую , например, как освобождение ресурсов, занятых в секции initialization ,  вы можете добавить к модулю секцию  finalization . Секция finalization  размещается после секции initialization , но перед заключительным  end модуля.

   Дополняющая статья :
How Delphi synchronizes forms and units - обзор двух основных строительных кирпичиков программ Delphi : форм и модулей.

 Возврат в список переводов