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

Delphi 資料類型系統全景圖:從簡單類型到變體與類別引用

     編輯:Delphi

Delphi 擁有豐富且層次分明的資料類型系統。本文按官方分類梳理所有類型類別,說明各類型的核心特性、典型用途與相互關係,幫助開發者建立完整的類型心智模型。

1. 簡單類型

簡單類型不可再分解,佔用固定記憶體大小,支援序數運算(除 Real/浮點數)。

類別代表類型大小/範圍說明
序數類型Integer4 位元組,-2147483648..2147483647平台預設有號整數
Cardinal4 位元組,0..4294967295無號整數
Shortint1 位元組,-128..127
Smallint2 位元組,-32768..32767
Longint4 位元組同 Integer
Int648 位元組64 位有號整數
Byte1 位元組,0..255無號
Word2 位元組,0..65535無號
LongWord4 位元組,0..4294967295無號
Char / AnsiChar / WideChar1/1/2 位元組字元類型
Boolean / ByteBool / WordBool / LongBool1/2/4 位元組布爾類型
枚舉類型(A, B, C)1/2/4 位元組用戶定義離散值集
子範圍類型0..100依基型別限制範圍的序數類型
實數類型Real8 位元組雙精度浮點(同 Double)
Single4 位元組單精度浮點
Double8 位元組標準雙精度
Extended10/16 位元組擴展精度(平台相關)
Comp8 位元組64 位整數運算的浮點表示
Currency8 位元組固定 4 位小數,貨幣運算專用

2. 字串類型

類型特性適用場景
string (UnicodeString)引用計數、写時複製、UTF-16、無長度上限現代 Delphi (2009+) 預設字串
AnsiString引用計數、代碼頁相關、無長度上限舊代碼遷移、特定代碼頁處理
WideString無引用計數、BSTR 相容、UTF-16COM/OLE 互操作
ShortString固定長度 255、索引 0 存長度、棧分配極少數底層/相容場景
PChar / PWideChar指向以 #0 結尾的 Char/WideChar 陣列Windows API、C DLL 互操作

3. 結構類型

類別關鍵字特性
集合set of BaseType基型別須為序數且元素數 ≤ 256,位運算高效
陣列array[Low..High] of T靜態/動態、多維、開放陣列參數
記錄record ... end值語義、可含方法/屬性/建構子(10.4+)、變體記錄
檔案file of T / TextFile型別檔/文字檔,傳統 I/O
類別class ... end參考語義、單一繼承、虛擬方法、介面實作、RTTI
類別引用class of TClass元類型、工廠模式、動態建構
介面interface ... end純抽象、GUID、引用計數、多介面實作

4. 指標類型

  • Pointer:無類型指標,相容所有指標類型。
  • ^TypeName:類型化指標,編譯器檢查解引用安全性。
  • 專用指標:PChar、PWideChar、PByte、PInteger、PRecord 等。

5. 程序類型

  • procedure / function:獨立函數指標。
  • reference to procedure / function:匿名方法(閉包),捕獲外部變數。
  • of object:綁定物件實例的方法指標(事件處理常用)。

6. 變體類型

  • Variant:可在運行時保存任意簡單類型、陣列、介面、記錄(自定義),支援動態綁定與晚期綁定。
  • OleVariant:COM 互操作專用,自動執行變體轉換。

7. 類型聲明與別名

type
  TMyInt = Integer;      // 類型別名(同一類型)
  TNewInt = type Integer; // 不同類型(強類型區分,防止誤混用)
  TCallback = procedure(X: Integer) of object;
  PMyRecord = ^TMyRecord;

類型系統關係圖(簡化)

Simple Types
 ├─ Ordinal Types → Integer, Char, Boolean, Enum, Subrange
 ├─ Real Types    → Single, Double, Extended, Currency
 └─ String Types  → string, AnsiString, WideString, ShortString
Structured Types
 ├─ Set
 ├─ Array (Static/Dynamic)
 ├─ Record
 ├─ File
 ├─ Class
 ├─ Class Reference
 └─ Interface
Pointer Types
Procedural Types
Variant Types

選型建議

  1. 整數運算首選 Integer(平台自適應),位運算用 Cardinal/Byte。
  2. 浮點財務用 Currency,科學計算用 Double/Extended。
  3. 字串統一用 string(UnicodeString)。
  4. 需值語義、棧分配、無繼承 → record;需繼承、多態、堆分配 → class。
  5. 跨模組回調 → 介面或匿名方法;單元內簡單回調 → 程序類型。
  6. 動態結構、脚本互操作 → Variant。

建立清晰的類型分類認知,能在設計 API、優化記憶體、排查類型不匹配錯誤時事半功倍。

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