Типы данных языка Object Pascal
Все переменные и константы, используемые в программе, всегда принадлежат какому-либо типу. Вызов функции также возвращает значение определенного типа.
Типы данных языка 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 8 Real48 2.9 * 10-39 .. 1.7 * 1038 6 Single 1.5 * 10-45 .. 3.4 * 1038 4 Double 5.0 * 10-324 .. 1.7 * 10308 8 Extended 3.6 * 10-4951 .. 1.1 * 104932 10 Comp -263+1 .. 263 -1 8 Currency -922337203685477.5808.. 922337203685477.5807 8 Для указания значения действительного типа можно использовать экспоненциальный формат (например, значение 1.3Е-5 эквивалентно 1.3*10-5).
-
Логические типы
ТипДиапазон значенийРазмер в байтах Boolean True или False 1 ByteBool True или False 1 WordBool True или False 2 LongBool True или False 4 -
Символьные типы
ТипДиапазон значенийРазмер в байтах Char ANSI-символ 1 AnsiChar ANSI-символ 1 WideChar Unicode-символ 2 -
Строковые типы
ТипМаксимальная длинаРазмер в байтах 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 битовое значение счетчика ссылок на строку.
Несколько идентификаторов строк могут ссылаться на одну строку. При этом им не будет выделяться дополнительная память, а только будет выполняться увеличение счетчика ссылок.