
На предыдущем уроке при открытии 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.
- Pascal — базовый язык программирования с лаконичным синтаксисом, делится на стандартный Pascal и объектно-ориентированный Object Pascal.
- Delphi — коммерческая закрытая IDE и компилятор на Object Pascal, работает нативно только под Windows, поставляется с библиотекой интерфейсов VCL.
- 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— хранение иконок в файле resUseXPManifest=True— включение современных стилей WindowsDpiAware=True— поддержка высокого DPI, интерфейс не размывается
Icon=0— использовать стандартную иконку проекта
BuildModes
Только стандартный профиль сборки Default (здесь разделяются режимы Debug и Release)
RequiredPackages
Зависимость от графической библиотеки LCL (обязательна для GUI-программ)
Units Список файлов проекта
project1.lpr— главная точка входа программы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 — собранная готовая программа, можно отправить на другие компьютеры для запуска, это независимый исполняемый файл без внешних зависимостей.
Запускается чрезвычайно быстро…