Структура проекта
Проект Delphi представляет собой набор программных единиц — модулей. Один из модулей — главный, содержит инструкции, с которых начинается выполнение программы. Главный модуль приложения полностью формируется Delphi.
Главный модуль представляет собой файл с расширением dpr. Для того чтобы увидеть текст главного модуля приложения, нужно из меню Project выбрать команду View Source.
В листинге ВЗ приведен текст главного модуля программы вычисления скорости бега.
Листинг ВЗ. Главный модуль приложения Скорость бега program vrun;
uses
Forms,vrun1 in 'vrunl.pas' {Form1};
{$R *.res}
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
Начинается главный модуль словом program, за которым следует имя программы, совпадающее с именем проекта. Имя проекта задается в момент сохранения проекта, и оно определяет имя создаваемого компилятором исполняемого файла программы. Далее за словом uses следуют имена используемых модулей: библиотечного модуля Forms и модуля формы vrunl.pas.
Строка {$R *.RES}, которая похожа на комментарий, — это директива компилятору подключить файл ресурсов. Файл ресурсов содержит ресурсы приложения: пиктограммы, курсоры, битовые образы и др. Звездочка показывает, что имя файла ресурсов такое же, как и у файла проекта, но с расширением res.
Файл ресурсов не "является текстовым файлом, поэтому просмотреть его с помощью редактора текста нельзя. Для работы с файлами ресурсов используют специальные программы, например, Resource Workshop. Можно также применять входящую в состав Delphi утилиту Image Editor, доступ к которой можно получить выбором из меню Tools команды Image Editor.
Исполняемая часть главного модуля находится между инструкциями begin и end. Инструкции исполняемой части обеспечивают инициализацию приложения и вывод на экран стартового окна.
Помимо главного модуля, каждая программа включает в себя еще как минимум один модуль формы, который содержит описание стартовой формы приложения и поддерживающих ее работу процедур. В Delphi каждой форме соответствует свой модуль.
В листинге В4 приведен текст модуля программы вычисления скорости бега.
Листинг В4. Модуль программы Скорость бега
unit vrun1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes,
Graphics, Controls, Forms, Dialogs, StdCtrls;
type
TForm1 = class(TForm) Edit1: TEdit;
Edit2: TEdit; Label1: TLabel;
Label2: TLabel; Label3: TLabel;
Label4: TLabel;
Button1: TButton;
Button2: TButton;
procedure ButtonlClick(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations } public
{ Public declarations } end;
var
Form1: TForm1;
implementation
{$R *.dfm}
// нажатие кнопки Вычислить
procedure TForm1.ButtonlClick'(Sender: TObject);
var
dist : integer; // дистанция, метров
t: real; // время как дробное число
min : integer; // время, минуты
sek : integer; // время, секунды
v: real;
// скорость
begin
// получить исходные данные из полей ввода
dist := StrToInt(Edit1.Text); t := StrToFloat(Edit2.Text);
// предварительные преобразования
min := Trunc(t); // кол-во минут — это целая часть числа t
sek := Trunc(t*100) mod 100; // кол-во секунд — это дробная часть
// числа t
// вычисление
v := (dist/1000) / ((min*60 + sek)/3600);
// вывод результата
label4.Caption := 'Дистанция: '+ Edit1.Text + ' м' + #13
+ 'Время: ' + IntToStr(min) + ' мин '
+ IntToStr(sek) + ' сек ' + #13 +
'Скорость: ' + FloatToStrF(v,ffFixed,4,2) + км/час';
end;
// нажатие кнопки Завершить
procedure TForm1.Button2Click(Sender: TObject)
begin
Form1.Close;
end;
end.
Начинается модуль словом unit, за которым следует имя модуля. Именно это имя упоминается в списке используемых модулей в инструкции uses главного модуля приложения, текст которого приведен в листинге ВЗ.
Модуль состоит из следующих разделов:
- интерфейса;
- реализации;
- инициализации.
Раздел интерфейса (начинается словом interface) сообщает компилятору, какая часть модуля является доступной для других модулей программы. В этом разделе перечислены (после слова uses) библиотечные модули, используемые данным модулем. Также здесь находится сформированное Delphi описание формы, которое следует за словом type.
Раздел реализации открывается словом implementation и содержит объявления локальных переменных, процедур и функций, поддерживающих работу формы.
Начинается раздел реализации директивой {$R *.DFM}, указывающей компилятору, что в процессе генерации выполняемого файла надо использовать описание формы. Описание формы находится в файле с расширением dfm, имя которого совпадает с именем модуля. Файл описания формы генерируется средой Delphi на основе внешнего вида формы.
За директивой ($R *.DFM} следуют процедуры обработки событий для формы и ее компонентов. Сюда же программист может поместить другие процедуры и функции.
Раздел инициализации позволяет выполнить инициализацию переменных модуля. Инструкции раздела инициализации располагаются после раздела реализации (описания всех процедур и функций) между begin и end. Если раздел инициализации не содержит инструкций (как в приведенном примере), то слово begin не указывается.
Следует отметить, что значительное количество инструкций модуля формирует Delphi. Например, Delphi, анализируя действия программиста по созданию формы, генерирует описание класса формы (после слова type). В приведенном примере инструкции, набранные программистом, выделены фоном. Очевидно, что Delphi выполнила значительную часть работы по составлению текста программы.