Языковый стандарт. Региональные параметры - VB
Формулировка задачи:
Как известно при выборе "Русский" - в числовых значениях используется десятичная запятая, "Английский США" - десятичная точка.
Как определить текущую раскладку - спасибо форуму - использую, но получилось кривовато.
Как определить программно языковый стандарт (Панель управления\Язык и региональные стандарты\)?
Решение задачи: «Языковый стандарт. Региональные параметры»
textual
Листинг программы
Option Explicit
Const LOCALE_SDATE = &H1D
Const LOCALE_SDECIMAL = &HE
Const LOCALE_USER_DEFAULT = &H400
Const LOCALE_SENGCOUNTRY = &H1002
Const LOCALE_SENGLANGUAGE = &H1001
Const LOCALE_SNATIVELANGNAME = &H4
Const LOCALE_SNATIVECTRYNAME = &H8
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 Sub Form_Load()
MsgBox "Страна = " & GetInfo(LOCALE_SENGCOUNTRY) & " (" & GetInfo(LOCALE_SNATIVECTRYNAME) & ")," & vbCrLf & "язык = " & GetInfo(LOCALE_SENGLANGUAGE) & " (" & GetInfo(LOCALE_SNATIVELANGNAME) & ").", vbInformation
MsgBox "Десятичный разделитель= " & GetInfo(LOCALE_SENGCOUNTRY) & " (" & GetInfo(LOCALE_SDECIMAL) & ")," & vbCrLf & "Даты разделитель = " & GetInfo(LOCALE_SENGLANGUAGE) & " (" & GetInfo(LOCALE_SDATE) & ").", vbInformation
End Sub
Public Function GetInfo(ByVal lInfo As Long) As String
Dim Buffer As String, Ret As String
Buffer = String$(256, 0)
Ret = GetLocaleInfo(LOCALE_USER_DEFAULT, lInfo, Buffer, Len(Buffer))
If Ret > 0 Then
GetInfo = Left$(Buffer, Ret - 1)
Else
GetInfo = ""
End If
End Function