首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> Delphi

Delphi 資料類型實戰:基本類型、枚舉、子範圍、字串與指標操作

     編輯:Delphi

Delphi 提供豐富的資料類型系統。本文聚焦基本類型操作函數、枚舉類型進階用法、子範圍類型、字串處理常見模式與指標字串互操作,提供大量可直接運行的代碼片段。

1. 基本類型操作函數

Delphi 內建操作序數類型的標準函數:

  • Ord(X):返回序數值。
  • Pred(X) / Succ(X):前驅/後繼值。
  • Low(T) / High(T):類型/變數範圍邊界。

2. 枚舉類型進階

基本聲明與序數

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

3. 子範圍類型

type
  SomeNumbers = -128..127;   // 有號字節範圍
  Caps = 'A'..'Z';           // 字元範圍
  Digits = '0'..'9';
  • 編譯器自動執行範圍檢查({$R+} 開啟)。
  • 可用於陣列索引、循環邊界、參數驗證,提升型別安全。

4. 字串與字元操作

逐字元轉大寫

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,無長度上限)。

5. 使用指標操作字串

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 或固定緩衝。

6. 型別轉換速查表

來源目標函數/語法
IntegerstringIntToStr, IntToHex
stringIntegerStrToInt, StrToIntDef
FloatstringFloatToStr, FloatToStrF
stringFloatStrToFloat, StrToFloatDef
BooleanstringBoolToStr
枚舉IntegerOrd
Integer枚舉TypeName(Value)
CharIntegerOrd
IntegerCharChr

最佳實踐建議

  1. 優先使用 string(UnicodeString)而非 AnsiString/ShortString。
  2. 枚舉類型盡量語義化命名,避免同名衝突;必要時用單元限定。
  3. 子範圍類型用於參數與陣列索引,開啟 {$R+} 捕捉越界。
  4. 指標字串互操作時明確所有權與生命週期,避免懸空指標。

熟練掌握這些基礎類型操作,是編寫高效、安全 Delphi 代碼的基石。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved