Справочник по технологии COM
Страница 88. VarNumFromParseNum


 

VarNumFromParseNum

После разбора строки, задающей число, его результаты можно преобразовать в число при помощи функции VarNumFromParseNum. Функции можно передать структуру NUMPARSE и массив цифр, полученные от VarParseNumFromStr или из любого другого источника. Функция выберет самый малый допустимый тип, который может содержать значение результата разбора с минимальной потерей точности. Вариант, в который помещается результат, — это выходной параметр, так что его содержимое не освобождается перед заполнением.

HRESULT VarNumFromParseNum 
(
[in] NUMPARSE *pnumprs,
[in] unsigned char *rgbDig,
[in] unsigned long dwVtBits,
[out] VARIANT *pvar
);

Параметры:
pnumprs
Результаты разбора. CDig задает размер rgbDig.
rgbDig
Содержит значения цифр. Поле cDig структуры NUMPARSE содержит число цифр.
dwVtBits
Содержит битовые флажки, задающие допустимые типы возвращаемого значения (во многих случаях установлен лишь один бит).
Используются следующие флаги:

VTBIT_I1
VTBIT_UIl
VTBIT_I2
VTBIT_UI2
VTBIT_I4
VTBIT_UI4
VTBIT_R4
VTBIT_R8
VTBIT_CY
VTBIT_DECIMAL

pvar
Указатель на вариант, в который помещается результат.

Коды возврата:
Из возвращенного HRESULT получают один из следующих кодов возврата:

Код возврата Значение
S_OK Успех.
Е_OUTOFMEMORY Не хватает памяти.
DISP_E_OVERFLOW Число слишком велико для любого из разрешенных типов результата. Потеря точности при преобразовании не считается ошибкой.

Для округления десятичных чисел массив цифр должен быть по крайней мере на одну цифру длиннее, чем максимальное число цифр для типа данных. Для типа данных DECIMAL максимальное число цифр равно 29, так что в массиве должно быть место не менее чем для 30 цифр. Кроме того, цифр должно быть достаточно для приема числа в восьмеричной системе счисления, если была выбрана эта опция. (VarNumFromParseNum ограничивает максимальное значение шестнадцатеричных и восьмеричных чисел размером типа unsigned long [32 бита] и, таким образом, требуется 11 восьмеричных цифр.)

 
Следующая статья »