Quick start manual
Memory management
11-3
Internal data formats
Internal data formats
The following sections describe the internal formats of Delphi data types.
Integer types
The format of an integer-type variable depends on its minimum and maximum 
bounds.
• If both bounds are within the range –128..127 (Shortint), the variable is stored as a 
signed byte.
• If both bounds are within the range 0..255 (Byte), the variable is stored as an 
unsigned byte.
• If both bounds are within the range –32768..32767 (Smallint), the variable is stored 
as a signed word.
• If both bounds are within the range 0..65535 (Word), the variable is stored as an 
unsigned word.
• If both bounds are within the range –2147483648..2147483647 (Longint), the 
variable is stored as a signed double word.
• If both bounds are within the range 0..4294967295 (Longword), the variable is 
stored as an unsigned double word.
• Otherwise, the variable is stored as a signed quadruple word (Int64).
Character types
A Char, an AnsiChar, or a subrange of a Char type is stored as an unsigned byte. A 
WideChar is stored as an unsigned word.
Boolean types
A Boolean type is stored as a Byte, a ByteBool is stored as a Byte, a WordBool type is 
stored as a Word, and a LongBool is stored as a Longint.
A Boolean can assume the values 0 (False) and 1 (True). ByteBool, WordBool, and 
LongBool types can assume the values 0 (False) or nonzero (True).
Enumerated types
An enumerated type is stored as an unsigned byte if the enumeration has no more 
than 256 values and the type was declared in the {$Z1} state (the default). If an 
enumerated type has more than 256 values, or if the type was declared in the {$Z2} 
state, it is stored as an unsigned word. If an enumerated type is declared in the {$Z4} 
state, it is stored as an unsigned double-word.










