Тип variant в Delphi

Тип данных variant часто используется тогда, когда тип какого то объекта ранее не известен или когда какие-то функции или процедуры требуют именно тип аргументов — variant. Однако следует знать, что затраты памяти и времени на работу с типом variant больше, чем с обычными типами.

В переменных типа данных variant могут храниться данные любых типов данных, кроме записей, множеств, статических массивов, файлов, классов или ссылок на классы и Int64 (-263/263-1). Объекты Com и Cobra также могут храниться в типе variant.

Переменные типа variant занимают 16 битов и содержат код типа и значения переменной или указатель на это значение. В момент создания эти переменные инициализируются специальным значением Unassigned. Значение переменной nil свидетельствует о неизвестном или ошибочном значении переменной. Вы можете заказать мощный и надежный сервер lenovo nextscale n1200 по оптимальной и доступной цене.

Узнать действительный тип значения переменной variant можно при помощи функции VarType, возвращающей значение поля VarType записи типа TvarData (модуль System), содержащее код типа переменной variant. Имеется также предопределенная константа varTypeMask, сложение при которой по операции and с переменной типа TVarData возвращает истинный тип переменной. Например:

VarType(V) and varTypeMask = varDouble

вернет true, если в переменной V в данный момент хранится значение типа double или массив значений double.

Некоторые значения типов, возвращаемые функцией VarType:

Константа

Численное значение

Тип

varEmpty

$0000

Unassigned
varNull

$0001

null
varInteger

$0003

Integer
varSingle

$0004

Single
varDouble

$0005

Double
varOLEstr

$0008

Ссылка на динамически размещенную строку UNICODE
varWord

$0012

Word
varString

$0100

Ссылка на динамически размещенную строку в стиле Pascal
varAny

$0101

Тип Cobra
varTypeMask

$0FFF

Битовая маска для извлечения кода типа
varArray

$2000

Бит, устанавливаемый при ссылке на массив variant
varByRef

$4000

Бит, устанавливаемый при ссылке на тип variant

. delphi-box.ru
.
Комментирование и размещение ссылок запрещено.