Страница 89 из 111 Структура 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. |