Полный разбор первого проекта

На предыдущем уроке при открытии IDE по умолчанию создаётся проект с пустым окном, но проект ещё не сохранён. Нажмите Ctrl + S, чтобы сохранить проект в папку.

Файлы проекта после сохранения показаны выше.

Папка backup

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

project1.ico

Иконка приложения, отображается на окне программы и ярлыке рабочего стола после компиляции.

project1.lpi

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

project1.lpr

Основной исходный файл — точка входа в программу, управляет всеми модулями форм.

project1.lps

Журнал сессии IDE: запоминает открытые файлы, расположение окон, позицию курсора; автоматически восстанавливает рабочую область при открытии проекта.

project1.res

Скомпилированный ресурсный файл, упаковывает встроенные ресурсы: иконки, сведения о версии и т.д.

unit1.lfm

Файл разметки формы, хранит размер окна, координаты, элементы управления, заголовки и другие визуальные параметры интерфейса.

unit1.pas

Исходный код логики формы, здесь пишут обработчики нажатий кнопок, переменные, функции и бизнес-логику; используется в паре с соответствующим файлом lfm.

unit1.pas

Это наш исходный файл Pascal. Как и Delphi, Lazarus построен на языке Pascal.

  1. Pascal — базовый язык программирования с лаконичным синтаксисом, делится на стандартный Pascal и объектно-ориентированный Object Pascal.
  2. Delphi — коммерческая закрытая IDE и компилятор на Object Pascal, работает нативно только под Windows, поставляется с библиотекой интерфейсов VCL.
  3. Lazarus — бесплатная открытая кроссплатформенная IDE на компиляторе Free Pascal с библиотекой LCL, совместима с синтаксисом Delphi, позволяет собирать нативные программы для Windows, macOS, Linux и других систем.

Одно предложение для резюме: Pascal — это язык, а Lazarus и Delphi — два разных инструмента разработки IDE.

Ниже приведён исходный код из файла pas:

unit Unit1;                // Имя модуля Unit1

{$mode objfpc}{$H+}        // Директива компиляции: режим ObjFPC + поддержка длинных строк

interface                  // Раздел интерфейса: экспортирует классы и переменные
uses
  Classes, SysUtils, Forms, Controls, Graphics, Dialogs; // Подключение базовых библиотек

type
  TForm1 = class(TForm)    // Основной класс окна, наследует базовую форму
  private                  // Закрытые члены
  public                   // Публичные члены
  end;

var
  Form1: TForm1;           // Глобальный экземпляр окна

implementation            // Раздел реализации: здесь вся логика кода
{$R *.lfm}                 // Привязывает визуальный файл разметки Unit1.lfm

end.Code language: JavaScript (javascript)

*.lfm — файл разметки форм Lazarus, хранит перетащенные элементы, размер окна и свойства;

interface объявляет внешние доступные элементы, implementation содержит бизнес-логику;

Встроенная директива {$mode objfpc} включает стандартный объектно-ориентированный режим компиляции Free Pascal;

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

unit1.lfm

unit1.lfm — наш файл разметки формы

object Form1: TForm1
  Left = 915
  Height = 240
  Top = 237
  Width = 320
  Caption = 'Form1'
  LCLVersion = '4.8.0.0'
end
Code language: JavaScript (javascript)

Разбор каждого параметра ниже:

object Form1: TForm1 // Определяет объект: экземпляр окна типа TForm1
Left = 915 // Отступ окна от левого края экрана: 915 пикселей
Height = 240 // Высота окна: 240 пикселей
Top = 237 // Отступ окна от верхнего края экрана: 237 пикселей
Width = 320 // Ширина окна: 320 пикселей
Caption = ‘Form1’ // Текст заголовка окна
LCLVersion = ‘4.8.0.0’ // Версия библиотеки LCL, создавшей эту разметку
end // Конец описания объекта окна

project1.ico

Это файл значка ico, используется как иконка приложения.

Можно открыть любым веб-браузером.

project1.lpi

Это XML-документ.

Файл project1.lpi — основной конфигурационный файл проекта, разделён на три крупных блока:

1. ProjectOptions Базовые параметры проекта

  • <Version Value="12"/> — формат конфига версии 12
  • <PathDelim Value="\\"/> — обратная косая черта как разделитель путей Windows

General Общие параметры проекта

  • SessionStorage=InProjectDir — сессии IDE сохраняются в папке проекта
  • Title=project1 — название проекта
  • Scaled=True — автоматическое масштабирование под высокое разрешение экрана
  • ResourceType=res — хранение иконок в файле res
  • UseXPManifest=True — включение современных стилей Windows
    • DpiAware=True — поддержка высокого DPI, интерфейс не размывается
  • Icon=0 — использовать стандартную иконку проекта

BuildModes

Только стандартный профиль сборки Default (здесь разделяются режимы Debug и Release)

RequiredPackages

Зависимость от графической библиотеки LCL (обязательна для GUI-программ)

Units Список файлов проекта

  1. project1.lpr — главная точка входа программы
  2. unit1.pas — модуль формы, привязан к классу визуального окна Form1

2. CompilerOptions Параметры компилятора

  • Имя выходного исполняемого файла: project1
  • Папка промежуточных файлов компиляции: lib\CPU-система (пример lib\x86_64-win64)
  • <GraphicApplication=True> — помечает программу как графическое приложение Windows, не консольное

3. Debugging Настройки отладки

Игнорирует указанные исключения без остановки отладки: EAbort, ошибки открытия файлов, ошибки инструментального кода и т.д.

project1.lpr

Также использует синтаксис Free Pascal (Object Pascal)

// Объявляет этот файл как главную точку входа проекта
program project1;

// Директивы компиляции: включить ООП и поддержку длинных строк
{$mode objfpc}{$H+}

uses
  // Подключение библиотеки потоков для Unix (Linux/macOS)
  {$IFDEF UNIX}
  cthreads,
  {$ENDIF}
  // Подключение библиотеки потоков для Amiga
  {$IFDEF HASAMIGA}
  athreads,
  {$ENDIF}
  Interfaces, // Кроссплатформенный низкоуровневый графический слой LCL
  Forms,     // Базовый фреймворк форм
  Unit1      // Пользовательский модуль главного окна
  { you can add units after this }; // Новые модули добавляйте здесь

{$R *.res} // Загрузить ресурсный файл проекта (иконки, сведения о версии)

begin
  RequireDerivedFormResource:=True; // Разрешить чтение файлов разметки lfm
  Application.Scaled:=True;        // Автоматическое масштабирование под высокое DPI
  {$PUSH}{$WARN 5044 OFF}          // Временно отключить предупреждение компиляции 5044
  Application.MainFormOnTaskbar:=True; // Отдельная иконка главного окна на панели задач
  {$POP}                           // Вернуть исходные настройки предупреждений

  Application.Initialize;           // Инициализация среды выполнения GUI-приложения
  Application.CreateForm(TForm1, Form1); // Создать экземпляр главного окна Form1
  Application.Run;                 // Запустить цикл сообщений окна, ожидать взаимодействия
end.Code language: PHP (php)

Различие:

  • Обычные файлы .pas — модули (окна или функциональные блоки)
  • .lpr — главный Pascal-файл проекта, точка запуска программы

project1.lps

Lazarus Project Session (файл сессии проекта), не является кодом Pascal

Это чистый журнал настроек IDE, хранит состояние редактирования прошлой сессии проекта

Примеры: открытые файлы кода/форм, расположение и размер всех окон, разбиение панелей, позиция курсора, точки останова, история поиска и многое другое

.lpr/.pas — исходный код, обязательны для компиляции;

.lps — временный файл только для IDE, не влияет на компиляцию.

project1.res

Бинарный скомпилированный ресурсный файл

Автоматически генерируется при компиляции из project1.ico, сведений о версии программы и манифеста интерфейса Windows

  • Хранит иконку программы, которая видна при правом клике по exe, на панели задач и ярлыках рабочего стола после сборки
  • Содержит системные ресурсные параметры: поддержка высокого DPI, визуальные стили XP Windows и т.д.

Связь с компиляцией Директива кода {$R *.res} встраивает этот ресурсный файл в итоговый exe Особенности

  • Можно удалить без опасности, при повторной компиляции создаётся заново;
  • Нужен только для Windows GUI-программ, консольные приложения не генерируют этот файл.

Открыв IDE, вы увидите эту панель визуального дизайнера

Это визуальный редактор форм, можно перетаскивать любые элементы управления. Принцип работы почти совпадает с VB, WinForm, WPF, Delphi, Qt и другими инструментами разработки на формах.

Например, перетащите кнопку на форму

Запустите проект снова.

На окне появится кнопка.

В нижней панели Messages видно папку, где генерируется exe-файл

В папке проекта появится новый exe-файл

Этот exe — собранная готовая программа, можно отправить на другие компьютеры для запуска, это независимый исполняемый файл без внешних зависимостей.

Запускается чрезвычайно быстро…

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *