Отрезок любого порядкового типа(кроме интервального) может быть определен как интервальный тип. Отрезок задается диапазоном от минимального до максимального значения. Порядковый тип, на котором строится отрезок, называется базовым типом.
Минимальное и максимальное значения называются нижней и верхней границами отрезка, определяющего интервальный тип. Нижняя граница должна быть меньше верхней.
Интервальный тип описывается в разделе объявления типов:
type
<имя_типа>=<значение1>..< значение2>;
<имя_типа> - имя нового интервального типа;
<значение1> - нижняя граница интервального типа;
<значение2> - верхняя граница интервального типа;
Над переменными, относящимися к интервальному типу, могут выполняться все операции и применяться все стандартные функции, которые допустимы для соответствующего базового типа.
При использовании в программах интервальных типов данных может осуществляться контроль над тем, чтобы значения переменных не выходили за границы, введенные для этих переменных в описании интервального типа.
Массивы представляют собой ограниченную упорядоченную совокупность однотипных величин. Каждая отдельная величина называется элементом массива. Тип элементов может быть любым, кроме файлового типа и называется базовым типом. Вся совокупность компонент определяется одним именем – именем массива. Доступ к элементу массива происходит по индексу – координатам элемента в массиве. В Object Pascal существуют статические и динамические массивы. Динамические массивы используют динамическое распределение памяти под массив и будут рассмотрены ниже вместе с другими динамическими структурами.
Статический массив описывается в разделе объявления типов или в разделе объявления переменных. В первом случае массив можно использовать в качестве типа параметров подпрограмм и типа результата функции.
Структура:
type <имя_типа>=array [<знач>[,…]] of <тип_элем>;
или
var <имя_перем>[,…]:array [<знач>[,…]] of
<тип_элем>[=(<спис_знач>)];
<тип элем.> - тип элементов массива(базовый тип).
<знач> - значение интервального типа (обычно целого).
Количество <знач> определяет количество измерений(координат элементов) массива (одномерный, двухмерный и т.д.), а само <знач> определяет границы изменения координаты и количество элементов для соответствующего измерения.
Можно проинициализировать переменную-массив начальными значениями, указанными в <спис_знач>. При инициализации многомерных массивов значения элементов каждого из входящих в него массивов записывается в скобках.
Для доступа к элементам массива используется структура:
<имя_масс>[<выраж.>[,…]]
Список выражений в скобках определяют индекс элемента. <выраж.> должно иметь значение целого типа. Количество <выраж.> должно соответствовать количеству измерений массива.
К массивам применима операция присваивания, копирующая все элементы одного массива в другой массив. Тип массивов должен быть эквивалентен.
Length(<имя_типа|имя_перем>), которые возвращают границы и длину первого измерения массива.
Строковой тип данных (строки)
Особое место в языке Object Pascal занимают массивы символов - строки. Работа со строками похожа на работу с обычными массивами, но строки не относятся к структурированным типам данным, так как имеют сложный внутренний механизм работы и хранения данных.
Тип
Количество символов
Требуемая память, байт
Кодировка
1. String[<знач>]
<знач>
<знач>+1
ASCII
2. ShortString
ASCII
3. AnsiString (String)
0-~2^31
4 б – 2 Гб
ASCII
4. WideString
0-~2^30
4 б – 2 Гб
Unicode
5. PChar
0-~2^31/~2^30
4 б – 2 Гб
ASCII или Unicode
Первые два типа представляют собой статические строковые типы. Остальные типы являются динамическими, то есть память под переменные выделяется автоматически в зависимости от текущего количества символов в строке.
Доступ к отдельным символам строки производится также как и для одномерных массивов:
<имя_строки>[<выраж.>]
<выраж.> - выражение целого типа, имеющее значение от 1 до количества символов в строке.
Тип элементов – Char или WideChar в зависимости от кодировки.
У переменных первых двух строковых типов существует специальный элемент с индексом 0, содержащий текущую длину строки.
Для строк (кроме PСhar) применимы:
1. Операция присваивания.
2. Операции отношения, которые производятся посимвольно. Если длина строки S1 больше длины строки S2, и все символы S2 равны соответствующим символам S1, то S1>S2. Например ‘AB’>’A’. Пустые строки представляют наименьшее значение: ‘A’>’’.
3. Операция конкатенации(объединения) строк +.
4. Стандартная функция Length(<имя_перем>), возвращающая текущую длину строки.
5. Стандартные функции для работы со строками - copy, delete, insert, pos.
Тип PСhar предназначен для хранения нуль-терминированных строк(стандартный строковой тип данных языка C++). В таких строках признаком конца строки является символ #0. Для работы с такими строками применяются стандартные подпрограммы из модуля SysUtils.
Данные типа PСhar и остальных строковых типов могут быть преобразованы друг в друга при помощи приведения типов.