О файле проекта

Известно, что Delphi создает множество файлов с расширениями pas, dfm, dpr и т.д. Обычно программиста интересуют файлы кода (pas) и описания форм (dfm), а остальные остаются вне его поля зрения, а зря — они несут важную информацию, которую можно (а в ряде случаев — нужно) изменять.

Начнем с файла проекта (dpr). Фактически он содержит собственно программу, в то время как связанные с проектом многочисленные файлы форм и DLL представляют собой подпрограммы.

Структура файла проекта, содержащего единственную форму, такова, как показано в листинге 1.

Листинг 1
program Project1;   
    
uses    
  Forms,   
  Unit1 in 'Unit1.pas' {Form1};   
    
{$R *.RES}   
    
begin   
  Application.Initialize;   
  Application.CreateForm(TForm1, Form1);   
  Application.Run;   
end.  

Проект (программа) начинается обращением к методу Initialize глобального объекта Application и заканчивается после завершения его метода Run. Этот метод — центральный: он визуализирует главную форму приложения и осуществляет диспетчеризацию сообщений Windows. От того, какая работа выполняется строками кода, расположенными перед обращением к нему, зависят время загрузки приложения, и вид экрана до появления главного окна.

Метод Initialize предусмотрен, как говорится, на всякий случай и по умолчанию ничего не осуществляет. Чтобы заставить его работать, следует поместить указатель на соответствующую процедуру без параметров в глобальную переменную InitProc. Это можно сделать в секции инициализации любого модуля (код этих секций активизируется до начала работы основной программы) или непосредственно в теле главного проекта (листинг 2):

Листинг 2
procedure Init;   
begin   
  // Выполняет какую-то работу;   
end;   
    
begin   
  InitProc := @Init;   
  Application.Initialize; // Обращение к Init   
  Application.CreateForm(TForm1, Form1);   
  Application.Run;   
end.

Разумеется, в этом последнем случае будет проще в первом операторе основной программы явно обратиться к процедуре Init. Вообще говоря, в подавляющем большинстве случаев оператор Application.Initialize можно удалить без каких-либо последствий для программы.
Теги:
pas, dfm, dpr
Добавлено: 08 Апреля 2018 06:39:24 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...