控制台輸出
Write / WriteLn
在 Pascal 中輸出字串,請使用內建程序 Write 或 WriteLn;WriteLn 會自動在字串末尾加上換行符。
這是 Pascal 彈性極高的內建程序:可傳入任意數量、任意資料型別的參數,列印時自動轉換為字串;同時支援專屬格式化語法,用來控制數值佔位寬度、浮點數小數精準度。
WriteLn('Hello world!');
// 輸出整數運算式
WriteLn('You can output an integer: ', 3 * 4);
// 整數靠右對齊佔位,總寬度10個字元
WriteLn('You can pad an integer: ', 666:10);
// 浮點數格式:總寬度1,小數保留4位
WriteLn('You can output a float: ', Pi:1:4);Code language: JavaScript (javascript)
手動換行
LineEnding 常數
若要在單一字串內手動插入換行,請使用 Free Pascal 標準函式庫提供的 LineEnding 常數;Castle Game Engine 另外封裝更簡短的 NL 常數。
Pascal 字串不會解析反斜線逸出字元(\n 無作用),下方寫法為錯誤範例:
// 錯誤:\n 不會被辨識為換行
WriteLn('One line.\nSecond line.');Code language: JavaScript (javascript)
兩種正確寫法:
// 串接換行常數
WriteLn('One line.' + LineEnding + 'Second line.');
// 分開兩次呼叫 WriteLn(簡潔且建議使用)
WriteLn('One line.');
WriteLn('Second line.');Code language: JavaScript (javascript)
注意事項
僅控制台程式可使用 WriteLn
Write/WriteLn 只在控制台程式生效,主程式檔案開頭必須標註編譯指示:
{$apptype CONSOLE}Code language: PHP (php)
不可設定為圖形介面模式:
{$apptype GUI} // GUI 程式直接呼叫 WriteLn 會觸發錯誤Code language: PHP (php)
- Unix/Linux/macOS:部分場景下 GUI 程式列印不會報錯,但輸出內容無實質意義;
- Windows:GUI 圖形程式直接執行 WriteLn 會觸發執行階段錯誤。
Castle Game Engine 日誌規範
使用 Castle Game Engine 開發時,禁止直接以 WriteLn 輸出除錯資訊,請改用專屬日誌介面:
WriteLnLog:一般除錯日誌WriteLnWarning:警告日誌
引擎會自動將日誌分流至對應輸出管道:
- Unix 系統:標準控制台輸出 stdout;
- Windows GUI 遊戲程式:寫入本機日誌檔;
- Android 平台:整合 Android 系統日誌,可透過
adb logcat檢視。
術語對照表
| 英文原文 | Pascal 中文釋義 |
|---|---|
| Write / WriteLn | 無換行輸出 / 帶換行輸出 |
| LineEnding | 系統換行常數(跨平台相容) |
| NL | Castle 簡寫換行常數 |
| padding | 數值佔位填充、對齊寬度 |
| precision | 浮點數小數精準度 |
| {$apptype CONSOLE} | 控制台應用編譯指示 |
| {$apptype GUI} | 圖形介面應用編譯指示 |
| adb logcat | Android 日誌檢視工具 |
| standard output | 標準輸出串流(stdout) |
本節完整範例
{$ifdef FPC} {$mode objfpc}{$H+}{$J-} {$endif}
{$ifdef MSWINDOWS} {$apptype CONSOLE} {$endif}
{$R+}
begin
WriteLn('Hello world!');
// 輸出整數運算式
WriteLn('You can output an integer: ', 3 * 4);
// 整數靠右對齊佔位,總寬度10個字元
WriteLn('You can pad an integer: ', 666:10);
// 浮點數格式:總寬度1,小數保留4位
WriteLn('You can output a float: ', Pi:1:4);
// 錯誤:\n 不會被辨識為換行
// WriteLn('One line.\nSecond line.');
// 串接換行常數
WriteLn('One line.' + LineEnding + 'Second line.');
// 分開兩次呼叫 WriteLn(簡潔且建議使用)
WriteLn('One line.');
WriteLn('Second line.');
end.Code language: PHP (php)


務必加上上方這行編譯指示才能正常執行