Wir sind es zwar gewohnt, dass das Datums-Trennzeichen ein Punkt
ist, dass unsere Währung (noch) DM heißt, oder dass das
Dezimal-Trennzeichen ein Komma ist. Und Sie ärgern sich bestimmt
auch immer wieder über Software aus anderen Ländern, die die
jeweiligen dortigen Gepflogenheiten annimmt, ohne die lokal auf
einem Rechner angetroffenen Ländereinstellungen zu
berücksichtigen. Damit man sich nicht auch über Ihre
Software-Produkte gleichermaßen ärgern wird, sollten Sie dafür
sorgen, dass sie in internationaler Hinsicht fit sind.
Zur lokal korrekten Darstellung von Zahlen und Datumswerten
verhelfen Ihnen die vielen Möglichkeiten der Format-Funktion.
Doch wenn Sie den Währungsbezeichner oder eines der Trennzeichen
einmal solo benötigen sollten, hilft Ihnen die Format-Funktion nur
notdürftig weiter. So könnten Sie das Dezimal-Trennzeichen mit der
Format-Funktion etwa auf folgende Weise ermitteln:
DecimalSeparator = Mid$(Format$(1.1, "0.0"), 2, 1)
Aber das ist nicht sonderlich elegant - und spätestens beim
Währungsbezeichner sind Sie damit aufgeschmissen. Und außerdem
kommen Sie so nicht an solche Feinheiten heran, die Windows durchaus
auch kennt, nämlich an möglicherweise unterschiedliche
Dezimal-Trennzeichen für "normale" Zahlen und für
Währungsbeträge.
Die korrekten Zeichen und Strings können Sie aber mit der
API-Funktion GetLocaleInfo
ermitteln. Die wichtigsten davon liefert Ihnen die Hilfsfunktion
LocaleString (als Eigenschaft in einem Standard-Modul
implementiert), die den etwas umständlichen Aufruf von
GetLocaleInfo kapselt und automatisch auf die lokalen Einstellungen
des aktuellen Users zurückgreift ( GetUserDefaultLCID).
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 Declare Function GetUserDefaultLCID Lib "kernel32" () As Long
Public Enum LocaleStringConstants
locCurrency = &H14
locCurSymbol = &H15
locDate = &H1D
locDecimal = &HE
locList = &HC
locMoneyDecimal = &H16
locMoneyThousands = &H17
locNegative = &H51
locPositive = &H50
locThousands = &HF
locTime = &H1E
End Enum
Public Property Get LocaleString(Info As LocaleStringConstants) _
As String
Dim nLocale As String
Dim nLen As Long
nLocale = Space$(10)
nLen = GetLocaleInfo(GetUserDefaultLCID(), Info, nLocale, 10)
LocaleString = Left$(nLocale, nLen - 1)
End Property
|