Tipp 0539 Ländereinstellungen auslesen
Autor/Einsender:
Datum:
  Detlev Schubert
24.11.2007
Entwicklungsumgebung:   VB 6
Möchte man Anwendungen entwickeln, die nicht nur auf deutschen Betriebssystemen lauffähig sein sollen, ist das Ermitteln der länderspezifischen Einstellungen wie Währungssymbol, Dezimaltrennzeichen und Dezimalstellen schon einmal eine Basis.
Mit der API-Funktion GetLocaleInfo lässt sich dies recht einfach realisieren. Da für diese Funktion jedoch mehr als 50 Konstanten zur Verfügung stehen, ist es ratsam nur diejenigen davon zu verwenden, die für die Realisierung des Projekts notwendig sind.
Die Einstellungen welches Dezimaltrennzeichen, wie viel Dezimalstellen, Tausend-Trennzeichen sowie Währungssymbol werden u.a. in dem Beispiel ausgelesen, denn für die Verarbeitung von Zahlenformaten sind diese Informationen äußerst wichtig, um Konvertier-Fehler zu vermeiden.
 
Option Explicit

Const LOCALE_SCURRENCY = &H14
Const LOCALE_SINTLSYMBOL = &H15
Const LOCALE_SMONDECIMALSEP = &H16
Const LOCALE_SMONTHOUSANDSEP = &H17
Const LOCALE_SMONGROUPING = &H18
Const LOCALE_ICURRDIGITS = &H19
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 Sub Form_Load()
  Dim Buffer As String * 100
  Dim RetVal As Long

  RetVal = GetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_SCURRENCY, _
     Buffer, 99)
  Label2(0).Caption = ConvNull(Buffer)

  RetVal = GetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_SINTLSYMBOL, _
     Buffer, 99)
  Label2(1).Caption = ConvNull(Buffer)

  RetVal = GetLocaleInfo(LOCALE_USER_DEFAULT, _
     LOCALE_SMONDECIMALSEP, Buffer, 99)
  Label2(2).Caption = ConvNull(Buffer)

  RetVal = GetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_ICURRDIGITS, _
     Buffer, 99)
  Label2(3).Caption = ConvNull(Buffer)

  RetVal = GetLocaleInfo(LOCALE_USER_DEFAULT, _
     LOCALE_SMONTHOUSANDSEP, Buffer, 99)
  Label2(4).Caption = ConvNull(Buffer)

  RetVal = GetLocaleInfo(LOCALE_USER_DEFAULT, _
     LOCALE_SMONGROUPING, Buffer, 99)
  Label2(5).Caption = ConvNull(Buffer)
End Sub

Private Function ConvNull(ByVal sString As String)
  Dim Pos As Long
  Pos = InStr(sString, Chr$(0))
  ConvNull = IIf(Pos > 0, Left$(sString, Pos - 1), "")
End Function
 
Weitere Links zum Thema
Rechnerdaten auslesen
Zeitzonen-Informationen auslesen

Windows-Version
95
98
ME
NT
2000
XP
Vista
Win 7
VB-Version
VBA 5
VBA 6
VB 4/16
VB 4/32
VB 5
VB 6


Download  (2,9 kB) Downloads bisher: [ 323 ]

Vorheriger Tipp Zum Seitenanfang Nächster Tipp

Startseite | Projekte | Tutorials | API-Referenz | VB-/VBA-Tipps | Komponenten | Bücherecke | VB/VBA-Forum | VB.Net-Forum | DirectX-Forum | Foren-Archiv | DirectX | VB.Net-Tipps | Chat | Spielplatz | Links | Suchen | Stichwortverzeichnis | Feedback | Impressum

Seite empfehlen Bug-Report
Letzte Aktualisierung: Samstag, 26. November 2011