EnglishРусский  

Реклама

Инсталлятор CreateInstall
Бесплатные и коммерческие инсталляторы

VARIANT

Тип VARIANT. VARIANT является универсальным типом для хранения всевозможных данных и позволяет разным программам корректно обмениваться данными. Он представляет собой структуру, которая содержит два основных поля, первое это тип хранящегося значения, второе это само значение или указатель на область памяти. Тип VARIANT имеет следующее описание

type VARIANT {
   ushort vt          
   ushort wReserved1     
   ushort wReserved2     
   ushort wReserved3 
   ulong  val
}

vt - код типа содержащегося значения ( константы типа VT_*: $VT_UI4, $VT_I4, $VT_BSTR ... );
val - поле для хранения значений.

В библиотеке поддерживается лишь часть возможностей типа VARIANT, но разрешается работать непосредственно с полями данной структуры Пример создания VARIANT( VT_BOOL ):

VARIANT bool
....
bool.clear()
bool.vt = $VT_BOOL
(&bool.val)->uint = 0xffff// 0xffff - VARIANT_TRUE

Примеры операций с VARIANT:

uint val
str  res
oleobj ActWorkSheet
VARIANT vval

....
vval = int( 100 )        //VARIANT( VT_I4 ) is being created
excapp~Cells(1,1) = vval //equals excapp~Cells(1,1) = 100
                        
vval = "Test string"     //VARIANT( VT_BSTR ) is being created
excapp~Cells(2,1) = vval //equals excapp~Cells(1,1) = "Test string"

val = uint( excapp~Cells(1,1)~Value ) //VARIANT( VT_I4 ) is converted to uint 
res = excapp~Cells(2,1)~Value         //VARIANT( VT_BSTR ) is converted to str
ActWorkSheet = excapp~ActiveWorkSheet //VARIANT( VT_DISPATCH ) is converted 
 to oleobj

Смотрите также

Исходники

Редактировать