2017-01-22 12 views
0

В региональной панели управления Windows имеется настройка «Цифровая группировка», которая указывает, используется ли индийская система нумерации, где символ разделителя тысяч группирует первые три цифры слева десятичного числа вместе, а затем каждые две цифры по сравнению с более общей группировкой, где каждые три цифры слева десятичные группируются вместе.Как получить настройку «Цифровая группировка Windows»

Как получить эту настройку в VB6?

Или, в качестве альтернативы, что является лучшим способом определить, когда использовать эту индийскую систему нумерации?

+2

'GetLocaleInfoEx()' 'с LOCALE_SGROUPING' функция - понятия не имею о vb6 однако. –

+1

Когда вы используете функцию 'FormatNumber()', вы можете передать 'vbUseDefault' для аргумента' GroupDigits' (или опустить его). Затем он должен форматироваться в соответствии с текущими настройками локали. – Bob77

ответ

4
Private Const LOCALE_SGROUPING = &H10 
Private Const LOCALE_USER_DEFAULT = &H400 
Private Declare Function GetLocaleInfo Lib "kernel32" Alias "GetLocaleInfoA" (ByVal Locale As Long, ByVal LCType As Long, ByVal lpLCData As String, ByVal cchData As Long) as Long 

Private Function Grouping() As String 
    Dim retVal As Long, sBuf As String 
    sBuf = String(255, vbNullChar) 
    retVal = GetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_SGROUPING, sBuf, Len(sBuf)) 
    Grouping = Left$(sBuf, retVal - 1) 
End Function 

Пример: Выведет: 3;0 для 123.456,789 и 3;2;0 для 12.34.56,789

0

Как Bob77 сказал в комментарии, почему бы просто не позволить FormatNumber сделать это для вас? Он будет применять группировку цифр из региональных настроек. Как это

MsgBox(FormatNumber(123456, , , , vbUseDefault)) 

"воздух код" - Я не пробовал это сам

+0

Спасибо, но это для произвольной программы точности, которая вычисляет числа с более чем 15 значащими цифрами точности, которые могут обрабатывать большинство программ, и возвращает их как текст, отформатированный так, чтобы выглядеть как число. Пример результата: «1,234,567,891.2345678912». Если вы попытаетесь сделать это с номером в большинстве программ, он будет усечен до 1 234 567 891,23456 (15 значащих цифр точности). Таким образом, FormatNumber не работает, потому что ничего, что VB6 видит как числовой тип данных, не работает. Программа выполняет математику с текстовыми строками. –

 Смежные вопросы

  • Нет связанных вопросов^_^