Все переменные и константы, используемые в программе, всегда принадлежат какому-либо типу. Вызов функции также возвращает значение определенного типа.
Типы данных языка Object Pascal можно разбить на следующие группы:
базовые типы данных:
целочисленный тип;
действительный тип;
логический тип;
символьный тип;
строковый тип;
производные типы данных;
простые типы данных:
порядковый тип;
перечислимый тип;
структурированные типы данных:
множества;
массивы;
записи;
файлы;
объектный тип (тип класса);
тип ссылки на класс;
указатели;
процедурный тип данных.
В язык Object Pascal включены следующие базовые типы данных:
· Целочисленные типы
Тип
Диапазон значений
Формат
Integer
-2147483648..2147483647
signed 32-bit
Cardinal
0..4294967295
unsigned 32-bit
Shortint
-128..127
signed 8-bit
Smallint
-32768..32767
signed 16-bit
Longint
-2147483648..2147483647
signed 32-bit
Int64
-263..263-1
signed 64-bit
Byte
0..255
unsigned 8-bit
Word
0..65535
unsigned 16-bit
Longword
0..4294967295
unsigned 32-bit
· Действительные типы
Тип
Диапазон значений
Размер в байтах
Real
5.0 * 10-324 .. 1.7 * 10308
Real48
2.9 * 10-39 .. 1.7 * 1038
Single
1.5 * 10-45 .. 3.4 * 1038
Double
5.0 * 10-324 .. 1.7 * 10308
Extended
3.6 * 10-4951 .. 1.1 * 104932
Comp
-263+1 .. 263 -1
Currency
-922337203685477.5808.. 922337203685477.5807
· Для указания значения действительного типа можно использовать экспоненциальный формат (например, значение 1.3Е-5 эквивалентно 1.3*10-5).
· Логические типы
Тип
Диапазон значений
Размер в байтах
Boolean
True или False
ByteBool
True или False
WordBool
True или False
LongBool
True или False
· Символьные типы
Тип
Диапазон значений
Размер в байтах
Char
ANSI-символ
AnsiChar
ANSI-символ
WideChar
Unicode-символ
· Строковые типы
Тип
Максимальная длина
Размер в байтах
string
Определяется директивой компилятора $H
ShortString
255 символов
От 2 до 256 байт
AnsiString (длинная строка)
~231 символов
От 4 байт до 2 Гбайт
WideString (Символы Unicode)
~230 символов
От 4 байт до 2 Гбайт
Для строковых переменных выполняются следующие правила:
строки могут быть постоянной или переменной длины: при объявлении строки можно указать только идентификатор или идентификатор и в квадратных скобках длину строки;
значение строки указывается в одинарных кавычках или как последовательность ASCII-символов, перед каждым из которых ставится знак #;
доступ к символу строки можно выполнять по индексу, указываемому в квадратных скобках (например, MyString[7] := 'n';).
Например:
var S1: string; {Объявление строковой переменной произвольной длины}S2: string[2]; {Объявление строковой переменной длиной 2 символа}
Строки типа AnsiString также называют длинными строками (long string), представляющими динамически размещаемые строки, длина которых ограничена только доступной памятью. Такие строки используют 1-байтовое представление ANSI-символов.
Реально переменная типа AnsiString является указателем, состоящим из 4 байт. Если строка пустая (ее длина равна 0), то указатель равен nil и для хранения строки никакой памяти не выделяется. Если строка не является пустой, то данная переменная указывает на динамически размещаемый блок памяти, содержащий значение строки, на 32-битовое значение длины строки и на 32 битовое значение счетчика ссылок на строку.
Несколько идентификаторов строк могут ссылаться на одну строку. При этом им не будет выделяться дополнительная память, а только будет выполняться увеличение счетчика ссылок.