Format 是 Delphi 最通用的格式化函數,支援整數、浮點數、字串、指標、十六進制等多種類型,格式字串語法豐富,包含索引、寬度、對齊、精度、類型等完整控制。本文通過 25+ 實例系統講解。
function Format(const Format: string; const Args: array of const): string;
Format:格式字串,含佔位符 %...。Args:array of const(即 array of TVarRec),支援任意類型參數。% [index ":"] ["-"] [width] [".prec"] type
| 組成 | 說明 |
|---|---|
| % | 佔位符起始,固定 |
| index: | 可選,指定參數索引 (0-based),允許重複/亂序使用 |
| - | 可選,左對齊 (預設右對齊) |
| width | 可選,最小寬度,不足補空格 |
| .prec | 可選,精度:浮點數小數位、字串最大長度、整數最小位數 |
| type | 必選,類型指令 (d/u/f/g/n/m/e/p/x/s 等) |
| 指令 | 對應類型 | 示例輸出 |
|---|---|---|
| d | 有符號整數 | 2147483647 |
| u | 無符號整數 | 4294967295 |
| s | 字串 | Hello |
| f | 浮點數 (固定 2 位小數) | 3.14 |
| g | 浮點數 (去尾隨 0) | 1.2345 |
| n | 浮點數 (千分位 + 2 位小數) | 12,345.68 |
| m | 貨幣 (含符號, 千分位, 2 位小數) | ¥12,345.68 |
| e | 科學計數法 | 1.23456789000000E+004 |
| p | 指標地址 (16 進制) | 0012F5BC |
| x | 16 進制整數 | FF |
var s: string;
begin
{基本類型}
s := Format('MaxInt=%d, MinInt=%d', [MaxInt, Low(Integer)]);
s := Format('UIntMax=%u', [High(Cardinal)]);
s := Format('Negative to UInt: %u', [-2]); {4294967294}
s := Format('%s! %s', ['你好', '我是萬一']); {你好! 我是萬一}
{浮點數變體}
s := Format('%f', [Pi]); {3.14}
s := Format('%g', [01.2345000]); {1.2345}
s := Format('%n', [12345.6789]); {12,345.68}
s := Format('%m', [12345.6789]); {¥12,345.68}
s := Format('%e', [12345.6789]); {1.23456789000000E+004}
{索引與重複使用}
s := Format('%1:s%0:s%0:s%1:s', ['萬', '一']); {一萬萬一}
{寬度與對齊}
s := Format('%d,%8d,%d', [1,2,3]); {1, 2,3}
s := Format('%d,%-8d,%d', [1,2,3]); {1,2 ,3}
{精度控制}
s := Format('%.9f', [Pi]); {3.141592654}
s := Format('%.5d', [12]); {00012}
s := Format('%.3s', ['Format']); {For}
s := Format('%.3e', [123.456]); {1.23E+002}
end;
Format('%2:s %1:s %0:s', ['A','B','C']); {C B A}
Format('%0:s %0:s', ['Hi']); {Hi Hi}
%m 使用 FormatSettings.CurrencyString、CurrencyFormat、ThousandSeparator、DecimalSeparator。多語言環境建議顯式設置 FormatSettings。
%p 僅供調試地址隨編譯/運行變化,不可持久化。
%u 處理負數陷阱負數轉無符號會產生巨大正數(MaxUInt - Abs(Value) + 1),業務邏輯中慎用。
Int64 但用 %d 會截斷,需用 %d 配合 Int64 實際上 RTL 會自動處理,但 %x 只取低 32 位。%.0f 等同 %.1f。%.3s 截取前 3 字符,超長不補齊。Format 以類 printf 的語法提供了極致靈活的綜合格式化能力,掌握「索引→對齊→寬度→精度→類型」五段式語法,即可應對從簡單字串拼接到複雜報表生成的所有場景。