Поделиться через


Структура VARIANT (oaidl.h)

VARIANTARG описывает аргументы, передаваемые в DISPPARAMS, и VARIANT , чтобы указать вариантные данные, которые не могут передаваться по ссылке.

Если вариант ссылается на другой вариант с помощью VT_VARIANT | VT_BYREF vartype, упоминаемый вариант также не может быть типом VT_VARIANT | VT_BYREF. VARIANTs можно передавать по значению, даже если VARIANTARG не удается.

Синтаксис

typedef struct tagVARIANT {
  union {
    struct {
      VARTYPE vt;
      WORD    wReserved1;
      WORD    wReserved2;
      WORD    wReserved3;
      union {
        LONGLONG     llVal;
        LONG         lVal;
        BYTE         bVal;
        SHORT        iVal;
        FLOAT        fltVal;
        DOUBLE       dblVal;
        VARIANT_BOOL boolVal;
        VARIANT_BOOL __OBSOLETE__VARIANT_BOOL;
        SCODE        scode;
        CY           cyVal;
        DATE         date;
        BSTR         bstrVal;
        IUnknown     *punkVal;
        IDispatch    *pdispVal;
        SAFEARRAY    *parray;
        BYTE         *pbVal;
        SHORT        *piVal;
        LONG         *plVal;
        LONGLONG     *pllVal;
        FLOAT        *pfltVal;
        DOUBLE       *pdblVal;
        VARIANT_BOOL *pboolVal;
        VARIANT_BOOL *__OBSOLETE__VARIANT_PBOOL;
        SCODE        *pscode;
        CY           *pcyVal;
        DATE         *pdate;
        BSTR         *pbstrVal;
        IUnknown     **ppunkVal;
        IDispatch    **ppdispVal;
        SAFEARRAY    **pparray;
        VARIANT      *pvarVal;
        PVOID        byref;
        CHAR         cVal;
        USHORT       uiVal;
        ULONG        ulVal;
        ULONGLONG    ullVal;
        INT          intVal;
        UINT         uintVal;
        DECIMAL      *pdecVal;
        CHAR         *pcVal;
        USHORT       *puiVal;
        ULONG        *pulVal;
        ULONGLONG    *pullVal;
        INT          *pintVal;
        UINT         *puintVal;
        struct {
          PVOID       pvRecord;
          IRecordInfo *pRecInfo;
        } __VARIANT_NAME_4;
      } __VARIANT_NAME_3;
    } __VARIANT_NAME_2;
    DECIMAL decVal;
  } __VARIANT_NAME_1;
} VARIANT;

Members

__VARIANT_NAME_1

__VARIANT_NAME_1.__VARIANT_NAME_2

Тип: __tagVARIANT структуры

__VARIANT_NAME_1.__VARIANT_NAME_2.vt

Тип: VARTYPE

Тип данных в союзе.

__VARIANT_NAME_1.__VARIANT_NAME_2.wReserved1

Тип: WORD

Зарезервировано.

__VARIANT_NAME_1.__VARIANT_NAME_2.wReserved2

Тип: WORD

Зарезервировано.

__VARIANT_NAME_1.__VARIANT_NAME_2.wReserved3

Тип: WORD

Зарезервировано.

__VARIANT_NAME_1.__VARIANT_NAME_2.__VARIANT_NAME_3

__VARIANT_NAME_2.__VARIANT_NAME_3.bool

Тип: _VARIANT_BOOL

16-разрядное логическое значение. Значение 0xFFFF (все биты 1) указывает значение true; Значение 0 (все биты 0) указывает значение false. Никакие другие значения недопустимы.

__VARIANT_NAME_2.__VARIANT_NAME_3.pbool

Тип: _VARIANT_BOOL*

Ссылка на 16-разрядное логическое значение.

__VARIANT_NAME_1.__VARIANT_NAME_2.__VARIANT_NAME_3.llVal

Тип: LONGLONG

8-байтовое целое число.

__VARIANT_NAME_1.__VARIANT_NAME_2.__VARIANT_NAME_3.lVal

Тип: LONG

Целое число 4-байтов.

__VARIANT_NAME_1.__VARIANT_NAME_2.__VARIANT_NAME_3.bVal

Тип: BYTE

Неподписанный 1-байтовый символ.

__VARIANT_NAME_1.__VARIANT_NAME_2.__VARIANT_NAME_3.iVal

Тип: SHORT

2-байтовое целое значение.

__VARIANT_NAME_1.__VARIANT_NAME_2.__VARIANT_NAME_3.fltVal

Тип: FLOAT

4-байтовое реальное значение.

__VARIANT_NAME_1.__VARIANT_NAME_2.__VARIANT_NAME_3.dblVal

Тип: DOUBLE

8-байтовое реальное значение.

__VARIANT_NAME_1.__VARIANT_NAME_2.__VARIANT_NAME_3.boolVal

Тип: VARIANT_BOOL

16-разрядное логическое значение. Значение 0xFFFF (все биты 1) указывает значение true; Значение 0 (все биты 0) указывает значение false. Никакие другие значения недопустимы.

__VARIANT_NAME_1.__VARIANT_NAME_2.__VARIANT_NAME_3.__OBSOLETE__VARIANT_BOOL

__VARIANT_NAME_1.__VARIANT_NAME_2.__VARIANT_NAME_3.scode

Тип: SCODE

Значение SCODE.

__VARIANT_NAME_1.__VARIANT_NAME_2.__VARIANT_NAME_3.cyVal

Тип: CY

Значение валюты.

__VARIANT_NAME_1.__VARIANT_NAME_2.__VARIANT_NAME_3.date

Тип: DATE

Значение даты и времени. Даты представлены как цифры двойной точности, где полуночи, 1 января 1900 г. — 2.0, 2 января 1900 г. — 3,0 и т. д.

Дату можно преобразовать в представление MS-DOS и из MS-DOS с помощью VariantTimeToDosDateTime.

__VARIANT_NAME_1.__VARIANT_NAME_2.__VARIANT_NAME_3.bstrVal

Тип: BSTR

Значение типа string.

__VARIANT_NAME_1.__VARIANT_NAME_2.__VARIANT_NAME_3.punkVal

Тип: IUnknown*

Указатель на объект, реализующий интерфейс IUnknown .

__VARIANT_NAME_1.__VARIANT_NAME_2.__VARIANT_NAME_3.pdispVal

Тип: IDispatch*

Указан указатель на объект.

__VARIANT_NAME_1.__VARIANT_NAME_2.__VARIANT_NAME_3.parray

Тип: SAFEARRAY*

Дескриптор безопасного массива, описывающий измерения, размер и расположение в памяти массива.

__VARIANT_NAME_1.__VARIANT_NAME_2.__VARIANT_NAME_3.pbVal

Тип: BYTE*

Ссылка на символ без знака 1-байтов.

__VARIANT_NAME_1.__VARIANT_NAME_2.__VARIANT_NAME_3.piVal

Тип: SHORT*

Ссылка на 2-байтовое целое число.

__VARIANT_NAME_1.__VARIANT_NAME_2.__VARIANT_NAME_3.plVal

Тип: LONG*

Ссылка на 4-байтовое целое число.

__VARIANT_NAME_1.__VARIANT_NAME_2.__VARIANT_NAME_3.pllVal

Тип: LONGLONG*

Ссылка на 8-байтовое целочисленное значение.

__VARIANT_NAME_1.__VARIANT_NAME_2.__VARIANT_NAME_3.pfltVal

Тип: FLOAT*

Ссылка на 4-байтовое реальное значение.

__VARIANT_NAME_1.__VARIANT_NAME_2.__VARIANT_NAME_3.pdblVal

Тип: DOUBLE*

Ссылка на 8-байтовое реальное значение.

__VARIANT_NAME_1.__VARIANT_NAME_2.__VARIANT_NAME_3.pboolVal

Тип: VARIANT_BOOL*

Ссылка на 16-разрядное логическое значение.

__VARIANT_NAME_1.__VARIANT_NAME_2.__VARIANT_NAME_3.__OBSOLETE__VARIANT_PBOOL

__VARIANT_NAME_1.__VARIANT_NAME_2.__VARIANT_NAME_3.pscode

Тип: SCODE*

Ссылка на значение SCODE.

__VARIANT_NAME_1.__VARIANT_NAME_2.__VARIANT_NAME_3.pcyVal

Тип: CY*

Ссылка на значение валюты.

__VARIANT_NAME_1.__VARIANT_NAME_2.__VARIANT_NAME_3.pdate

Тип: DATE*

Ссылка на значение даты и времени. Даты представлены как цифры двойной точности, где полуночи, 1 января 1900 г. — 2.0, 2 января 1900 г. — 3,0 и т. д.

__VARIANT_NAME_1.__VARIANT_NAME_2.__VARIANT_NAME_3.pbstrVal

Тип: BSTR*

Ссылка на строковое значение.

__VARIANT_NAME_1.__VARIANT_NAME_2.__VARIANT_NAME_3.ppunkVal

Тип: IUnknown**

Ссылка на указатель интерфейса IUnknown .

__VARIANT_NAME_1.__VARIANT_NAME_2.__VARIANT_NAME_3.ppdispVal

Тип: IDispatch**

Ссылка на указатель объекта.

__VARIANT_NAME_1.__VARIANT_NAME_2.__VARIANT_NAME_3.pparray

__VARIANT_NAME_1.__VARIANT_NAME_2.__VARIANT_NAME_3.pvarVal

__VARIANT_NAME_1.__VARIANT_NAME_2.__VARIANT_NAME_3.byref

Тип: PVOID

Универсальное значение.

__VARIANT_NAME_1.__VARIANT_NAME_2.__VARIANT_NAME_3.cVal

Тип: CHAR

Значение 1-байтового символа.

__VARIANT_NAME_1.__VARIANT_NAME_2.__VARIANT_NAME_3.uiVal

Тип: USHORT

Целое число без знака 2-байтов.

__VARIANT_NAME_1.__VARIANT_NAME_2.__VARIANT_NAME_3.ulVal

Тип: ULONG

Целое число без знака 4-байтов.

__VARIANT_NAME_1.__VARIANT_NAME_2.__VARIANT_NAME_3.ullVal

Тип: ULONGLONG

Целое число без знака 8-байтов.

__VARIANT_NAME_1.__VARIANT_NAME_2.__VARIANT_NAME_3.intVal

Тип: INT

Целочисленное значение.

__VARIANT_NAME_1.__VARIANT_NAME_2.__VARIANT_NAME_3.uintVal

Тип: UINT

Целое число без знака.

__VARIANT_NAME_1.__VARIANT_NAME_2.__VARIANT_NAME_3.pdecVal

Тип: DECIMAL*

Десятичное значение, которое хранится как 96-разрядное (12-байтовое) целое число без знака, масштабируемое переменной мощностью 10.

__VARIANT_NAME_1.__VARIANT_NAME_2.__VARIANT_NAME_3.pcVal

Тип: CHAR*

Ссылка на 1-байтовое значение символа.

__VARIANT_NAME_1.__VARIANT_NAME_2.__VARIANT_NAME_3.puiVal

Тип: USHORT*

Ссылка на целое число без знака 2-байтов.

__VARIANT_NAME_1.__VARIANT_NAME_2.__VARIANT_NAME_3.pulVal

Тип: ULONG*

Ссылка на целое число без знака 4-байтов.

__VARIANT_NAME_1.__VARIANT_NAME_2.__VARIANT_NAME_3.pullVal

Тип: ULONGLONG*

Ссылка на целое число без знака 8-байтов.

__VARIANT_NAME_1.__VARIANT_NAME_2.__VARIANT_NAME_3.pintVal

Тип: INT*

Ссылка на целочисленное значение.

__VARIANT_NAME_1.__VARIANT_NAME_2.__VARIANT_NAME_3.puintVal

Тип: UINT*

Ссылка на целое число без знака.

__VARIANT_NAME_1.__VARIANT_NAME_2.__VARIANT_NAME_3.__VARIANT_NAME_4

Тип: __tagBRECORD структуры

__VARIANT_NAME_1.__VARIANT_NAME_2.__VARIANT_NAME_3.__VARIANT_NAME_4.pvRecord

Тип: PVOID

Ссылка на запись базы данных.

__VARIANT_NAME_1.__VARIANT_NAME_2.__VARIANT_NAME_3.__VARIANT_NAME_4.pRecInfo

Тип: IRecordInfo*

Ссылка на определяемый пользователем тип.

__VARIANT_NAME_1.decVal

Тип: DECIMAL

Десятичное значение.

Требования

Требование Ценность
Header oaidl.h