Описание:
Процедура VarType возвращает целое число, отображающее текущий тип данных для переменной VariantVariable с типом Variant.
Тип данных - это 16-битное значение, состоящее из старших 4-х бит и младших 12 бит. Старшие биты означают метатип данных:
varArray : если Variant содержит массив данных
varByRef : если Variant косвенно ссылается на данные
Младшие биты содержат одно из следующих значений:
varEmpty
varNull
varSmallint
varInteger
varSingle
varDouble
varCurrency
varDate
varOleStr
varDispatch
varError
varBoolean
varVariant
varUnknown
varShortInt
varByte
varWord
varLongWord
varInt64
varStrArg
varString
varAny
Используйте VarTypeMask для игнорирования мета-части при поиске базового типа данных переменной Variant.
Пример кода:
var
myVar : Variant;
begin
// Assign various values to a Variant
// and
then show the resulting Variant type
ShowMessage('Variant value
= not yet set');
ShowBasicVariantType(myVar);
// Simple value
myVar := 123;
ShowMessage('Variant value = 123');
ShowBasicVariantType(myVar);
// Calculated value using a
Variant and a constant
myVar := myVar + 456;
ShowMessage('Variant value = 123 + 456');
ShowBasicVariantType(myVar);
myVar := 'String
'+IntToStr(myVar);
ShowMessage('Variant value = String 579');
ShowBasicVariantType(myVar);
end;
// Show the type
of a variant
procedure TForm1.ShowBasicVariantType(varVar: Variant);
var
typeString : string;
basicType : Integer;
begin
// Get the Variant basic type :
// this means excluding array or indirection modifiers
basicType := VarType(varVar) and VarTypeMask;
// Set a
string to match the type
case basicType of
varEmpty : typeString := 'varEmpty';
varNull : typeString := 'varNull';
varSmallInt :
typeString := 'varSmallInt';
varInteger :
typeString := 'varInteger';
varSingle : typeString
:= 'varSingle';
varDouble : typeString :=
'varDouble';
varCurrency : typeString :=
'varCurrency';
varDate : typeString := 'varDate';
varOleStr : typeString := 'varOleStr';
varDispatch : typeString := 'varDispatch';
varError : typeString := 'varError';
varBoolean : typeString := 'varBoolean';
varVariant : typeString := 'varVariant';
varUnknown : typeString := 'varUnknown';
varByte : typeString := 'varByte';
varWord : typeString := 'varWord';
varLongWord : typeString := 'varLongWord';
varInt64 : typeString := 'varInt64';
varStrArg : typeString := 'varStrArg';
varString : typeString := 'varString';
varAny : typeString := 'varAny';
varTypeMask : typeString := 'varTypeMask';
end;
// Show the Variant type
ShowMessage('Variant type is '+typeString);
end;
Результат выполнения:
Variant value = not yet set
Variant type = varEmpty
Variant value = 123
Variant type = varByte
Variant value = 123 + 456
Variant type = varInt64
Variant value = String 579
Variant type = varString