Delphi 提供豐富的資料類型系統。本文聚焦基本類型操作函數、枚舉類型進階用法、子範圍類型、字串處理常見模式與指標字串互操作,提供大量可直接運行的代碼片段。
Delphi 內建操作序數類型的標準函數:
Ord(X):返回序數值。Pred(X) / Succ(X):前驅/後繼值。Low(T) / High(T):類型/變數範圍邊界。type
Suit = (Club, Diamond, Heart, Spade); // Ord: 0,1,2,3
type
TSound = (Click, Clack, Clock);
procedure TForm1.DBGridEnter(Sender: TObject);
var
Thing: TSound;
begin
Thing := MyUnit.Click; // 單元名限定消除歧義
end;
{ 例 1:手動指定值 }
type
Size = (Small = 5, Medium = 10, Large = Small + Medium);
var
X: Size;
begin
X := Small; // Ord(X) = 5
X := Size(6); // 強制轉型,Ord = 6
Inc(X); // Ord = 7
end;
{ 例 2:重複序數值 }
type
SomeEnum = (e1, e2, e3 = 1); // Ord(e1)=0, Ord(e2)=1, Ord(e3)=1
type
SomeNumbers = -128..127; // 有號字節範圍
Caps = 'A'..'Z'; // 字元範圍
Digits = '0'..'9';
{$R+} 開啟)。var
I: Integer;
MyString: string;
begin
I := Length(MyString);
while I > 0 do
begin
MyString[I] := AnsiUpperCase(MyString[I])[1]; // AnsiUpperCase 返回字串,取首字元
Dec(I);
end;
end;
現代寫法:MyString := AnsiUpperCase(MyString) 或 MyString.UpperCase(Delphi 10.4+)。
MyString := 'Hello world!';
MyString := 'Hello' + 'world';
MyString := MyString + '!';
MyString := ' '; { 空格 }
MyString := ''; { 空字串 }
ShortString 最大長度 255 字元(索引 0 存長度),現代代碼建議使用 string(UnicodeString,無長度上限)。
const
TempString: array[0..12] of Char = 'Hello world!';
var
P: PChar;
begin
P := @TempString[0]; // 取首字元地址
// P 現在指向以 #0 結尾的 Char 陣列,可傳遞給 Win32 API
end;
PChar = ^Char,指向以 #0 結尾的字元陣列。PWideChar 用於 Unicode API。string 隱式轉 PChar(編譯器插入臨時緩衝),但生命週期僅限當前語句,長期持有需 UniqueString 或固定緩衝。| 來源 | 目標 | 函數/語法 |
|---|---|---|
| Integer | string | IntToStr, IntToHex |
| string | Integer | StrToInt, StrToIntDef |
| Float | string | FloatToStr, FloatToStrF |
| string | Float | StrToFloat, StrToFloatDef |
| Boolean | string | BoolToStr |
| 枚舉 | Integer | Ord |
| Integer | 枚舉 | TypeName(Value) |
| Char | Integer | Ord |
| Integer | Char | Chr |
string(UnicodeString)而非 AnsiString/ShortString。{$R+} 捕捉越界。熟練掌握這些基礎類型操作,是編寫高效、安全 Delphi 代碼的基石。