Справочник по технологии COM
Страница 89. Структура NUMPARSE


Структура NUMPARSE

Флаги, используемые для dwInFlags и dwOutFlags:

NUMPRS_LEADING_WHITE
NUMPRS_TRAILING_WHITE
NUMPRS_LEADING_PLUS
NUMPRS_TRAILING_PLUS
NUMPRS_LEADING_MINUS
NUMPRS_TRAILING_MINUS
NUMPRS_HEX_OCT
NUMPRS_PARENS
NUMPRS_DECIMAL
NUMPRS_THOUSANDS
NUMPRS_CURRENCY
NUMPRS_EXPONENT
NUMPRS_USE_ALL
NUMPRS_STD

Флаги, используемые только для dwOutFlags:

NUMPRS_NEG 
NUMPRS_INEXACT

Перед вызовом VarParseNumFromStr необходимо инициализировать два элемента передаваемой функции структуры NUMPARSE:

typedef struct 
{
int cDig;
unsigned long dwInFlags;
unsigned long dwOutFlags;
int cchUsed;
int nBaseShift;
int nPwr10;
} NUMPARSE;

Элемент cDig устанавливается равным размеру массива rgbDig, а в dwInFlags помещаются опции разбора. Все остальные элементы могут быть неинициализированными и устанавливаются функцией, кроме случаев ошибок, как описано ниже. Элемент cDig тоже изменяется функцией, чтобы отражать фактическое число цифр, помещенных в массив rgbDig.

В элемент cchUsed структуры NUMPARSE помещается число символов (от начала строки), для которых разбор был успешно выполнен. Это позволяет определить, вся ли строка представляет собой число (что обязательно для таких функций, как VarI2-FromStr) или откуда следует продолжить разбор строки.

Элемент nBaseShift задает число бит на цифру (3 или 4 для восьмеричных и шестнад-цатеричных чисел либо 0 для десятичных).

Следующее применимо только для десятичных цифр:
nPwr10 определяет положение десятичной запятой, задавая степень 10 для наименее значащей цифры.
Если число отрицательное, то в dwOutFlags будет установлен флаг NUMPRS_NEG.
Если строка содержит больше ненулевых десятичных цифр, чем может уместиться в массиве цифр, то устанавливается флаг NUMPRS_INEXACT.

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