Вариантные типы
Для объявления переменной вариантного типа используется зарезервированное слово variant.
Под переменную данного типа отводится 16 байт. В них содержится код типа, а также значение переменной или указатель на значение.Тип variant позволяет хранить все простые типы данных (кроме Int64), а также динамические массивы.
В Object Pascal определены два особых значения переменных типа variant:
? Unassigned — означает, что, переменной пока не присвоено значение какого бы то ни было типа, то есть к вариантной переменной ни разу не обращались (данное значение присваивается вариантной переменной при ее инициализации);
? Nutt — означает, что вариантная переменная содержит данные неизвестного типа.
Для получения информации о типе данных, хранимых в вариантной переменной, используется специальная функция VarType. Коды, возвращаемые данной функцией, приведены в табл. 7.3.
Таблица 7.3. Коды типов вариантных переменных |
Для работы с вариантными массивами в Object Pascal существует ряд специальных функций:
function VarArrayCreate (const Bounds:array of Integer:
VarType:Integer): Variant:
Эта функция предназначена для создания вариантного массива с границами, заданными параметром Bounds, и типом элементов, заданных параметром VarType. Значение VarType должно быть одним из кодов, приведенных в табл. 7.3. Например, следующая строка создает массив вещественных чисел, состоящий из 10 элементов (переменная А должна быть описана как variant):
А: =УагАггауСгеа1е( [0,9] .уагОоиЫе):
Элементы массива могут иметь вариантный тип и, следовательно, содержать данные различных типов. Например, пусть имеется вызов:
А;Ц/агАггауСгеаГе( [0.4] .уагУапаШ:);
После выполнения этого вызова будут допустимы следующие присваива-
function VarArrayOf (const Values:array of variant):Variant;
Данная функция возвращает одномерный вариантный массив с элементами, представленными в переменной Values.
Нижний индекс массива всегда равен О, а верхний определяется количеством элементов массива, переданного в Values. Например, после выполнения следующего оператора переменная А будет являться вариантным массивом, состоящим из 3 элементов вариантного типа:A;=VarArray0f([10, 3.14, 'Text']);
procedure VarArrayRedim (var A: Variant; HighBound: Integer);
Применяется для изменения верхнего предела HighBound вариантного массива А. Значения элементов массива, определенные перед изменением предела, сохраняются.
function VarArrayLock (var A: Variant): Pointer:
Используется для фиксирования вариантного массива А и возвращения указателя на первый элемент массива. Пока массив зафиксирован, его размерность не может быть изменена, и вызов функции VarArrayRedim будет безрезультат- , ным. Для отмены фиксации используется процедура:
VarArrayUnlock(var A: Vartant)
Еще по теме Вариантные типы:
- смешанные типы
- Раздел II. Отдельные типы (виды) договоров
- Типы Характеров Человека
- 2.3. Типы и методы выборки
- ТИПЫ СОЦИАЛЬНЫХ ОТНОШЕНИЙ
- Типы энергетических блоков
- Типы дат
- 3.1.6. Смешанные типы
- Смешанные типы
- Смешанные типы
- 1 3.5.6. Смешанные типы
- Смешанные типы .