<<
>>

Вариантные типы

Вариантные тиры используются в тех случаях, когда необходимо передавать зна­чение, тип которого заранее неизвестен.

Для объявления переменной вариантного типа используется зарезервированное слово 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)

<< | >>
Источник: Избачков Ю. С., Петров В. Н.. Информационные системы. 2006

Еще по теме Вариантные типы:

  1. смешанные типы
  2. Раздел II. Отдельные типы (виды) договоров
  3. Типы Характеров Человека
  4. 2.3. Типы и методы выборки
  5. ТИПЫ СОЦИАЛЬНЫХ ОТНОШЕНИЙ
  6. Типы энергетических блоков
  7. Типы дат
  8. 3.1.6. Смешанные типы
  9. Смешанные типы
  10. Смешанные типы
  11. 1 3.5.6. Смешанные типы
  12. Смешанные типы .