Страница 88 из 111 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 восьмеричных цифр.) |