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


Функция VariantToDoubleArray (propvarutil.h)

Извлекает массив значений DOUBLE из структуры VARIANT .

Синтаксис

PSSTDAPI VariantToDoubleArray(
  [in]  REFVARIANT var,
  [out] DOUBLE     *prgn,
  [in]  ULONG      crgn,
  [out] ULONG      *pcElem
);

Параметры

[in] var

Тип: REFVARIANT

Ссылка на исходную структуру VARIANT .

[out] prgn

Тип: DOUBLE*

Указатель на буфер, содержащий значения crgnDOUBLE . Когда эта функция возвращает, буфер инициализирован с элементами *pcElemDOUBLE , извлеченными из исходной структуры VARIANT .

[in] crgn

Тип: ULONG

Количество элементов в буфере, на которые указывает prgn.

[out] pcElem

Тип: ULONG*

При возврате этой функции содержит количество элементов DOUBLE , извлеченных из исходной структуры VARIANT .

Возвращаемое значение

Тип: HRESULT

Возвращает S_OK в случае успешного выполнения, или значение ошибки в противном случае, включая следующее:

Код возврата Описание
TYPE_E_BUFFERTOOSMALL
Исходный variant содержит больше значений crgn .
E_INVALIDARG
Variant не был соответствующего типа.

Комментарии

Эта вспомогающая функция используется, когда вызывающее приложение ожидает , что variant будет содержать массив, состоящий из фиксированного числа значений DOUBLE .

Если исходный variant имеет тип VT_ARRAY | VT_DOUBLE эта функция извлекает до значений crgnDOUBLE и помещает их в буфер, на который указывает prgn.

Если VARIANT содержит больше элементов, чем помещается в буфер prgn , эта функция возвращает ошибку и устанавливает для параметра *pcElem значение 0.

Примеры

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

// VARIANT var;
// Assume variable var is initialized and valid.
DOUBLE rgDoubles[4]; // The application expects var to hold 4 DOUBLEs in an array.
ULONG cDoubles;

HRESULT hr = VariantToDoubleArray(var, rgDoubles, ARRAYSIZE(rgDoubles), &cFlags);

if (SUCCEEDED(hr))
{
    if (cFlags == ARRAYSIZE(rgDoubles))
    {
        // The application got 4 DOUBLEs which are now stored in rgDoubles.
    }
    else
    {
        // The application got *pcElem DOUBLEs which are stored in the first 
        // *pcElem elements of rgDoubles.
    }
}

Требования

Требование Значение
Минимальная версия клиента Windows XP с пакетом обновления 2 (SP2), Windows Vista [только классические приложения]
Минимальная версия сервера Windows Server 2003 с пакетом обновления 1 (SP1) [только классические приложения]
Целевая платформа Windows
Header propvarutil.h
Библиотека Propsys.lib
DLL Propsys.dll (версия 6.0 или более поздняя)
Распространяемые компоненты Windows Desktop Search (WDS) 3.0

См. также раздел

InitVariantFromDoubleArray

PropVariantToDoubleVector

VariantGetDoubleElem

VariantToDouble

VariantToDoubleArrayAlloc