Так же, как и программа, модуль состоит из нескольких разделов и записывается в виде текста, в специальный файл с расширением pas.
Для того чтобы лучше понять принцип работы модуля, сначала, создадим, а затем испытаем его. Для этого запустим Delphi и откроем уже написанную нами, на прошлом уроке, программу MyProgram.dpr. Теперь нам нужно добавить модуль. Для этого выбираем в меню File > New > Unit.
В окне редактора кода появится текст нового модуля. Выглядит он, как показано на рисунке.
Как и программа, модуль начинается с заголовка, но перед ним стоит не program, известное из нам прошлого урока, а ключевое слово unit, которое сообщает компилятору о начале модуля. Далее следует обязательные для каждого модуля ключевые слова interface и implementation. Далее следует ключевое слово end, которые сообщают компилятору об окончании модуля. Ключевое слово interface сообщает о том, что дальше идут константы, типы, переменные, процедуры, функции и т.д, доступ к которым осуществляется с других модулей, к которым подключен данный. Ключевое слово implementation говорит компилятору о том, что дальше идут те же разделы, что и в interface, плюс описание подпрограмм (процедур и функций). А теперь, сохраним нашу программу вместе с новым модулем. Для этого выбираем в меню File > Save Project As. После чего Delphi предложит сохранить модуль с помощью стандартного диалога. Вводим название модуля MyUnit (или MyUnit.pas) и сохраняем его в ту же папку, где находится программа. Затем Delphi предложит нам сохранить главный модуль MyProgram.dpr. Нажимаем "Cохранить", после этого появится диалог с вопросом о перезаписи файла MyProgram.dpr. Отвечаем "OK".
А сейчас напишем в нашем модуле одну несложную функцию, которая будет сообщать текущую дату, установленную на компьютере. Для этого введем после ключевого слова interface еще одно ключевое слово uses, после которого напишем названия модулей Windows и SysUtils. Теперь, не вдаваясь в подробности, просто скопируем функцию из листинга в модуль (более подробно функции мы разберем в следующих уроках).
function GetData: PChar;
begin
Result := PChar(DateToStr(Date));
end;
А сейчас введем заголовок функции в разделе interface (зразу после модулей Windows и SysUtils). Делается это для того, чтобы другой модуль, который будет использовать данный, мог обратиться к нашей функции. Ну вот, наш первый модуль готов и выглядит он так, как показано в примере.
unit MyUnit;
interface
uses
Windows, SysUtils;
function GetData: PChar;
implementation
function GetData: PChar;
begin
Result := PChar(DateToStr(Date));
end;
end.
Сохраняем все внесенные изменения в помощью нажатия Ctrl + S. Теперь осталось подключить модуль в программу MyProgram. Но здесь у нас исключительный случай. Дело в том, что среда разработки уже подключила этот модуль автоматически, еще при его создании. Обратите внимание на строку в разделе uses главного модуля. Нажмите Ctr + F12 и кликните два раза MyProgram в списке. Перед вами появится следующий текст.
program MyProgram;
uses
Windows,
MyUnit in 'MyUnit.pas';
Здесь, после Windows, мы видим название модуля MyUnit. Далее, после специального ключевого слова in мы видим название файла 'MyUnit.pas'. Сделано это для более точного понимания компилятора, где искать подключаемый модуль. Если мы удалим in и 'MyUnit.pas' и оставим одно название MyUnit, то компилятор все равно найдет файл модуля MyUnit.pas так, как он расположен в той же папке, что и программа которая подключает его. В нашем случае, срока in 'MyUnit.pas' не обязательна и если хотите, то смело можете удалить её без вреда для программы.
И вот, когда мы разобрались с модулем, давайте вместо ‘Привет Мир!’ в функции MessageBox введем функцию GetData. То есть, тем самым, мы вызовем функцию из нашего модуля MyUnit, которая передаст функции MessageBox текущую дату, а MessageBox, в свою очередь, выведет её на экран, в стандартном диалоге (см. рисунок).
program MyProgram;
uses
Windows,
MyUnit in 'MyUnit.pas';
{$R *.res}
begin
MessageBox(0, GetData, 'My Program', MB_OK);
end.
И вот, программа готова. Проверяем ошибки (Ctrl + F9) и запускаем её на (F9), наслаждаемся результатом. Сохраняем программу с помощью Save Project As главного меню.
Скачать исходники
|