Страница 87 из 111 VarParseNumFromStr Создает не зависящее от типа представление числа, заданного в строке. Функция VarParseNumFromStr заполняет элемент dwOutFlags в соответствии с обнаруженными особенностями строки. Это позволяет вызывающему на основании формата введенного числа определить, какой числовой тип для него использовать. Например, одно приложение может использовать тип CURRENCY, если в строке задан символ денежной единицы, другое же может использовать тип с плавающей запятой, если в строке задана экспонента. HRESULT VarParseNumFromStr ( [in] OLECHAR* strln, [in] LCID kid, [in] unsigned long dwFlags, [in] NUMPARSE *pnumprs, [out] unsigned char *rgbDig );
Параметры: strln Входная строка, которую нужно преобразовать в число. kid Идентификатор местности. pnumprs Результаты разбора строки. dwFlags Позволяет управлять разбором, т. е. определять допустимый синтаксис числа. Если параметр равен нулю, то входная строка не должна содержать ничего, кроме десятичных цифр. Каждый установленный флаг активизирует разбор соответствующей синтаксической конструкции. При стандартном разборе Автоматизации (например, при работе VarI2FromStr) все флаги установлены (NUMPRS_STD). rgbDig Массив rgbDig заполняется значениями цифр в диапазоне 0-7, 0-9 или 0-15, в зависимости от того, является ли число восьмеричным, десятичным или шестнадца-теричным. Нули в начале отбрасываются. Для десятичных чисел нули на конце также отбрасываются, если только число не равно нулю. В последнем случае возвращается одна цифра 0. Коды возврата: Из возвращенного HRESULT получают один из следующих кодов возврата: Код возврата | Значение | S_OK | Успех. | E_OUTOFMEMORY | Невозможно выделить память для внутреннего буфера. (Используется только для DBCS, чтобы создать копию строки, состоящую из однобайтовых символов.) | DISP_E_TYPEMISMATCH | Строку нельзя преобразовать в число, либо отсутствует парная закрывающаяся скобка. В первом случае cDig и cchUsed в структуре NUMPARSE будут равны 0. Во втором случае структура NUMPARSE и массив цифр будут полностью сформированы так, как если бы закрывающаяся скобка присутствовала. | DISP_E_OVERFLOW | Для шестнадцатеричных и восьмеричных чисел это означает, что цифр больше, чем умещается в массив. Для десятичных чисел — экспонента превосходит максимальное значение. В обоих случаях структура NUMPARSE и массив цифр полностью сформированы (в случае десятичного числа значение поля cchUsed не учитывает экспоненту). | |