Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Снежинкам / Модули.pps
Скачиваний:
7
Добавлен:
02.02.2015
Размер:
57.86 Кб
Скачать

Модули

Модули предназначены для хранения стандартных готовых программ или наборов данных. В ИСР Delphi используются:

Основной модуль – модуль формы. Модули общего назначения. Модули данных.

Модули динамических библиотек. Пакеты.

Модули пакетов.

Модуль включается в программу при компиляции. Это увеличивает память программы.

DLL подключается в ходе выполнения программы при обращении к процедуре или функции описанной в ней.DLL загружается только на время использования. Память почти не занимается.

Модуль может хранить и подпрограммы и данные, а DLL - только подпрограммы.

Основной модуль – модуль формы. Его интерфейсная часть содержит объявление нового класса (типа формы) и при конструировании формы автоматически обновляется ИСР.

Программа на Delphi состоит из главной программы и (возможно) нескольких модулей. Применение модулей позволяет:

использовать метод бригадного программирования, сократить объем основной программы, при изменении подпрограммы перекомпилируется только она.

Модуль - хранилище стандартных готовых подпрограмм или данных. По своей структуре Модуль = Программа.

Может храниться и компилироваться отдельно. Может использоваться другими программами или модулями путем вызова их подпрограмм по именам.

Не используется автономно. Хранится в двух вариантах:

Модуль на языке Delphi, <имя>.pas. Расширение для языка Pascal, на котором основан язык Delphi Компилированный модуль, <имя>.dcu.

Структура модуля

unit <имя>;

// Заголовок модуля

interface

 

<Интерфейсная часть> implementation

<Исполняемая часть>

initialization

// Не обязательно

<Инициирующая часть>

finalization

// Не обязательно

<Завершающая часть> end.

unit Complex;

Имя модуля обязательно, оно используется для связи с вызывающей программой. Должно совпадать с именем файла с кодом модуля на Delphi: Complex.pas.

Ссылка на модули в вызывающей программе в строке: uses <список модулей>.

Интерфейсная часть interface содержит:

Ссылки на внешние модули, используемые в данном модуле. Объявления глобальных объектов (типов, констант, переменных). Заголовки (только) подпрограмм (функций и процедур). Инициирующая часть initialization содержит операторы, которые выполняются до передачи управления вызывающей программе. Например, инициируются переменные, открываются файлы и др. Завершающая части finalization содержит операторы, которые выполняются после завершения работы вызывающей программы. Например, освобождаются выделенные программе ресурсы, закрываются файлы и др.

Пример

unit Complex;

// Заголовок модуля

interface

// Заголовок интерфейсной части

type

// Объявление глобального типа

TComplex = record

// Запись

Re, Im: Real;

// Два поля – вещественные

числа end;

function AddC(x,y: TComplex):TComplex; // Заголовок функции сложения

function SubC(x,y: TComplex):TComplex; // Заголовок функции вычитания

function MultC(x,y: TComplex):TComplex; // Заголовок функции умножения

function DivC(x,y: TComplex):TComplex; // Заголовок функции деления

implementation

// Заголовок исполняемой части

function AddC(x,y: TComplex):TComplex; // Описание функции сложения

begin

 

 

Result.Re:=x.Re + y.Re;

 

Result.Im:=x.Im + y.Im;

 

end;

// AddC

 

function SubC(x,y: TComplex):TComplex; // Описание функции вычитания

begin

 

 

Result.Re:=x.Re – y.Re;

 

Result.Im:=x.Im – y.Im;

 

end; // SubC

 

function MultC(x,y: TComplex):TComplex; // Описание функции умножения

begin

 

 

Result.Re:=x.Re*y.Re – x.Im*y.Im;

Result.Im:=x.Re*y.Im +

x.Im*y.Re;

end;

// MultC

 

function DivC(x,y: TComplex):TComplex; // Описание функции деления

var z: Real;

// Вспомогательная локальная переменная

begin

 

// Расчет знаменателя

z:=sqr(y.Re)+sqr(y.Im);

try

 

// Защита от краха при делении на ноль

Result.Re:=(x.Re*y.Re + x.Im*y.Im)/z;

Result.Im:=(x.Re*y.Im – x.Im*y.Re)/z;

except

// При делении на 0 ответ очень большой

Result.Re:=1.1e309;

Result.Im:=1.1.e309;

 

end;

// DivC

 

end;

 

end.

 

 

Доступ к объектам модуля

Для создания модуля и работы с ним нужно: Командой Файл=>Новый=>Приложение создать проект

вызывающей программы. Создать модуль можно только в проекте.

Командой Файл=>Новый вызвать окно архива и выбрать в нем Модуль (модуль без формы).

Заголовок модуля по умолчанию Unit с текущим номером. По умолчанию инициирующей и завершающей частей нет. При необходимости их следует добавить вручную.

Вредакторе кода нужно занести в него код модуля. Сохранить модуль. В нашем примере с именем Complex.Pas. Откомпилировать модуль.

Вкоде вызывающей программы в строку uses добавить

ссылку на модуль ( в нашем примере Complex). Теперь в коде вызывающей программы можно употреблять

функции, определенные в модуле.