Введение в программирование

       

Типы данных языка Object Pascal


Все переменные и константы, используемые в программе, всегда принадлежат какому-либо типу. Вызов функции также возвращает значение определенного типа.

Типы данных языка Object Pascal можно разбить на следующие группы:

  • базовые типы данных:
    • целочисленный тип;
    • действительный тип;
    • логический тип;
    • символьный тип;
    • строковый тип;

  • производные типы данных;
  • простые типы данных:
    • порядковый тип;
    • перечислимый тип;

  • структурированные типы данных:
    • множества;
    • массивы;
    • записи;
    • файлы;
    • объектный тип (тип класса);
    • тип ссылки на класс;

  • указатели;
  • процедурный тип данных.

В язык Object Pascal включены следующие базовые типы данных:

  • Целочисленные типы

    ТипДиапазон значенийФормат
    Integer-2147483648..2147483647signed 32-bit
    Cardinal0..4294967295unsigned 32-bit
    Shortint-128..127signed 8-bit
    Smallint-32768..32767signed 16-bit
    Longint-2147483648..2147483647signed 32-bit
    Int64-263..263-1signed 64-bit
    Byte0..255unsigned 8-bit
    Word0..65535unsigned 16-bit
    Longword0..4294967295unsigned 32-bit

  • Действительные типы

    ТипДиапазон значенийРазмер в байтах
    Real5.0 * 10-324 .. 1.7 * 103088
    Real482.9 * 10-39 .. 1.7 * 10386
    Single1.5 * 10-45 .. 3.4 * 10384
    Double5.0 * 10-324 .. 1.7 * 103088
    Extended3.6 * 10-4951 .. 1.1 * 10493210
    Comp-263+1 .. 263 -18
    Currency-922337203685477.5808.. 922337203685477.58078

    Для указания значения действительного типа можно использовать экспоненциальный формат (например, значение 1.3Е-5 эквивалентно 1.3*10-5).

  • Логические типы

    ТипДиапазон значенийРазмер в байтах
    BooleanTrue или False1
    ByteBoolTrue или False1
    WordBoolTrue или False2
    LongBoolTrue или False4
  • Символьные типы

    ТипДиапазон значенийРазмер в байтах
    CharANSI-символ 1
    AnsiCharANSI-символ 1
    WideCharUnicode-символ 2
  • Строковые типы

    ТипМаксимальная длинаРазмер в байтах
    stringОпределяется директивой компилятора $H
    ShortString255 символовОт 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 битовое значение счетчика ссылок на строку.

Несколько идентификаторов строк могут ссылаться на одну строку. При этом им не будет выделяться дополнительная память, а только будет выполняться увеличение счетчика ссылок.


Содержание раздела