前言
在本文中,我們介紹建置 Pascal / Delphi 開發環境的過程。
選擇適合自己的 Delphi 版本
Delphi 作為商業化 Pascal 開發環境,目前根據開發需求提供四種主要版本:
- Community (社群版)
- 定位:適合個人開發者、學生或初學者入門。
- 功能:支援 Windows 桌面、macOS 與行動裝置 App 開發。
- 限制:可免費使用,但設有營收限制(年收入需低於 5,000 美元)。若用於商業接案,營收極易跨過此門檻,因此較建議作為「學習試用」或「MVP 開發」階段使用。
- Professional (專業版)
- 定位:具備與社群版相近的功能,但移除營收限制。
- 核心差異:主要在於商業授權,適合獨立接案者或小型工作室進行正式商業開發。
- Enterprise (企業版)
- 定位:針對跨平台與中大型企業應用。
- 核心差異:新增支援 GNU/Linux 編譯與 Linux 後端開發。對於需要將 Delphi 現有邏輯遷移至 Linux Server 或進行雲端整合的企業來說,這是最合適的選擇。
- Architect (架構師版)
- 定位:提供最完整的開發生態系。
- 核心差異:包含開發全端 Web Application 的工具鏈。由於此版本與 Enterprise 版的授權費用較高,建議公司在確有分散式架構或特定 Web 開發需求時再行採購。
此外,市場上常見的 RAD Studio 則是將 Delphi 與 C++ Builder 整合在同一個開發套件中的產品線,若您的專案需要同時維護這兩種語言,再考慮選擇此方案。
學習建議: 對於初學 Pascal 的開發者,建議先由 Community 版入手,熟悉環境後,再根據未來的專案規模與商業營運需求,評估升級至對應的商業版本。
安裝 Free Pascal 和 Lazarus
Free Pascal 是一套模擬 Turbo Pascal 與 Delphi 的 Pascal 編譯器,本身不包含圖形介面開發功能。Lazarus 則提供對應的整合開發環境(IDE)以及圖形介面程式函式庫。
Lazarus 安裝通常包含以下三個部分:
- Free Pascal
- (選擇性)Free Pascal 原始碼
- (選擇性)Lazarus
若僅需撰寫命令列程式,且不依賴 IDE,則只安裝 Free Pascal 即可;若需要開發圖形介面應用程式,則建議三者一併安裝。
在 Windows 上安裝
到 Lazarus 官網下載 Lazarus 的安裝程式,即會同時安裝前述的三項軟體。
在 macOS 上安裝
到 Lazarus 官網下載 Lazarus 的 pkg 安裝程式。三個 pkg 檔是分開的,請依前述順序安裝。由於近年來的 Mac 主機採用 64 位元 CPU,請安裝 64 位元的 Lazarus。
早期的 Lazarus 是 32 位元軟體,基於 Carbon。但新版的 macOS 把 Carbon 拿掉了。幸好新版的 Lazarus 已逐漸遷移到 Cocoa,並有 64 位元的版本。
在 GNU/Linux 上安裝
GNU/Linux 版本的 Lazarus 基於 GTK,在安裝 Lazarus 時會一併安裝。許多 GNU/Linux 已經預先包好 Lazarus,就不需要到官網下載套件。
在 Debian/Ubuntu/Linux Mint 可參考以下指令:
$ sudo apt install fpc fpc-source lazarus
在 openSUSE 可參考以下指令:
$ sudo zypper install fpc fpc-src lazarus
在 Fedora 可參考以下指令:
$ sudo dnf install fpc fpc-src lazarus
(選擇性) 建立 C 開發環境
Pascal 本身是跨平台的編譯語言,但 Pascal 本身的社群資源較少,有時候會使用以 C 函式庫實作的 Pascal binding。雖然一開始不需要,必要時還是得安裝 C 開發環境,用來安裝 C 函式庫。
筆者先前在介紹 C 語言時,已經介紹建置 C 開發環境的方式,此處不再重覆。需要的讀者可看一下筆者先前所寫的文章:
選擇開發工具與編輯器
在開發 Pascal / Delphi 程式時,通常會根據是否需要圖形介面 (GUI) 來選擇適合的開發工具:
圖形介面程式 (GUI)
開發圖形介面程式時,建議使用 Delphi 或 Lazarus 等 RAD (快速應用程式開發) 工具。這類軟體已內建完整的 IDE (整合式開發環境) 與視覺化設計介面,不需額外配置其他編輯器。
非圖形介面程式 (CLI / 後端 / 輕量專案)
若只需撰寫命令列程式或文字導向的專案,使用 RAD 軟體會顯得較為臃腫。此時建議採用「輕量化編輯器 + 專案管理工具」的組合,例如自行搭配 Make 或 CMake 來編譯與管理專案。
目前推薦的輕量化選擇是 VSCode。除了本身擴充功能豐富外,與 WSL (Windows Subsystem for Linux) 的整合度高,適合跨平台開發。
管理 Pascal 程式碼專案
傳統的 Pascal 語言本身並沒有專案管理的概念。在實際開發中,通常會依據專案類型與開發工具來選擇管理方式:
RAD 工具內建管理
若使用 Delphi 或 Lazarus 開發,可以直接沿用這些 RAD 工具內建的專案管理功能,這是最直覺且完整的方案。
命令列專案與自動化工具
Pascal 官方並沒有提供預設的命令列專案範本。如果需要自動化編譯,可以使用 Free Pascal 內建的 fpcmake 工具來自動生成相對應的 Makefile,省去手動撰寫編譯設定的麻煩。
輕量化腳本管理(中小專案推薦)
事實上,Pascal 編譯器的機制非常聰明——只要指定程式的進入點(Entry Point),它就能自動走訪並編譯所有相關聯的原始碼。
對於中小型專案來說,特地配置 Make 或 CMake 反而有些大材小用。此時,直接使用 POSIX sh 腳本 來自動化編譯流程是更輕量、高效的選擇。基於這個想法,筆者設計了一套開箱即用的樣板專案,詳細資訊請參考頁底連結。
自動編排 Pascal 程式碼
雖然 Pascal 對於空白、縮進、換行等相對自由,將程式碼排列整齊有助於閱讀程式碼。除了手動編排程式碼外,也可以用 Free Pascal 附帶的 ptop (Pascal to Pascal) 進行自動程式碼編排。
使用方式如下:
$ ptop input.pas output.pas
在不加設定檔時,ptop 會自動以內建的風格來編排程式碼。如果想要更動編排風格,要使用設定檔。
使用 ptop 即可生成預設設定檔:
$ ptop -g ptop.cfg
接著修改 ptop.cfg 。有關設定檔的格式,請看這裡。
修改設定檔蠻花時間的,建議修改好後,將設定檔保存起來,日後就套用同一份設定檔。如果在維護團隊專案時,應該會有現成的設定檔可用。
然後重新用新的設定檔來編排程式碼:
$ ptop -c ptop.cfg input.pas output.pas
檢查記憶體洩露 (Memory Leak) 或損壞 (Memory Corruption)
Pascal 不會自動管理記憶體,程式設計者需要自行管理記憶體。所幸,Free Pascal 內建監控記憶體洩露或損壞的功能,可以協助我們確認記憶體使用是否有問題。在編譯程式時加上 -gh 參數即可。參考以下指令:
$ fpc -gh -oprogram source.pas
以下是實例:
$ ./program
Heap dump by heaptrc unit
68 memory blocks allocated : 2588/2824
68 memory blocks freed : 2588/2824
0 unfreed memory blocks : 0
True heap size : 163840 (160 used in System startup)
True free heap : 163680
等確認完沒有記憶體洩露,要把程式上線時,移除 -gh 參數再重新編譯一次程式即可。
另見
如果您想採用前述的輕量化腳本來管理專案,可以參考筆者實作的開箱即用範本: