
上一堂課開啟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:使用 res 資源檔存放圖示UseXPManifest=True:開啟 Windows 現代視覺樣式DpiAware=True:程式支援高DPI高解析螢幕,介面不會模糊
Icon=0:使用專案預設ico圖示
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 圖形GUI程式,非主控台程式
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; // 高解析螢幕自動縮放介面
{$PUSH}{$WARN 5044 OFF} // 暫時關閉5044號編譯警告
Application.MainFormOnTaskbar:=True; // 主視窗獨立顯示工作列圖示
{$POP} // 還原原先警告設定
Application.Initialize; // 初始化GUI程式執行環境
Application.CreateForm(TForm1, 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 介面資訊清單自動編譯產生
- 存放軟體圖示,編譯後程式右鍵內容、工作列、桌面捷徑皆會顯示此圖示
- 儲存 Windows 高DPI、XP視覺樣式等系統資源組態
編譯關聯 程式內 {$R *.res} 會讀取此資源檔嵌入最終EXE執行檔 特性
- 可直接刪除,重新編譯專案時會自動重新產生;
- 僅 Windows 平台GUI程式需要,主控台程式不會產生此檔案。
開啟IDE後可以看到這個視覺化設計介面

這是視覺化表單設計器,可將各類控制項拖放至畫面。操作邏輯與VB、WinForm、WPF、Delphi、Qt等表單開發工具大致相同。
示範:拖放一個按鈕控制項到表單上

再次執行專案。

視窗上就會多出一個按鈕元件。

底部Messages訊息視窗可查看EXE執行檔輸出目錄
專案資料夾內會自動產生一支EXE執行檔

此EXE即為編譯完成的成品程式,可直接複製到其他電腦執行,屬於無額外執行階段相依的獨立執行檔。
執行速度相當快速…