Die Community zu .NET und Classic VB.
Menü

VB 5/6-Tipp 0733: Alle Sprachen auflisten

 von 

Beschreibung 

Bezugnehmend auf Tippvorschlag "LCID in RFC1766-Zeichenfolge umwandeln", wird dieses Thema aufgegriffen um einen weiteren Tipp nachzulegen: Da man mit den Stringkürzeln, die die Funktion ConvertLCIDToRfc1766 liefert (z.B.: sv-FI), evtl. nicht gleich etwas anfangen kann, und man der FileVersioninfo-Klasse entnehmen kann, wie es besser geht, hier eine Funktion die einen LCID-Integer (bzw Long) in einen leserlichen Text verwandelt. Es werden in einer Unterroutine alle möglichen (und unmöglichen) LCID's durchlaufen (es werden auch LCIDs generiert, die keine Verwendung haben), mit der API-Funktion VerLanguageNameA in einen String konvertiert und in einer ListBox gesammelt.

Schwierigkeitsgrad:

Schwierigkeitsgrad 1

Verwendete API-Aufrufe:

VerLanguageNameA

Download:

Download des Beispielprojektes [1,85 KB]

'Dieser Quellcode stammt von http://www.activevb.de
'und kann frei verwendet werden. Für eventuelle Schäden
'wird nicht gehaftet.

'Um Fehler oder Fragen zu klären, nutzen Sie bitte unser Forum.
'Ansonsten viel Spaß und Erfolg mit diesem Source!

'------------- Anfang Projektdatei Projekt1.vbp -------------
'--------- Anfang Formular "Form1" alias Form1.frm  ---------
' Steuerelement: Listen-Steuerelement "List1"
' Steuerelement: Schaltfläche "BtnListLCIDString"
Option Explicit
Private Declare Function VerLanguageNameA Lib "kernel32.dll" ( _
    ByVal wLang As Long, ByVal szLang As String, ByVal nSize As Long _
    ) As Long

Private Sub BtnListLCIDString_Click()
    Dim i As Long, j As Long
    Dim sBuf As String * 256
    Dim HashCol As New Collection
        Dim c As Long
    Dim sLen As Long
    Dim sLCItem As String
    Dim sH As String
    Dim sItem As String
    Dim lcid As Long
  
    For i = 0 To &HFF
        For j = 0 To &H10
            lcid = j * &H400 + i
            sLen = VerLanguageNameA(lcid, sBuf, 256)
            If sLen > 0 Then
                sLCItem = Left$(sBuf, sLen)
                If Not IsInList(HashCol, sLCItem) Then
                    sH = Hex$(lcid)
                    sH = String$(4 - Len(sH), "0") & sH
                    sItem = "&H" & sH & "   " & sLCItem
                    c = c + 1
                    sH = CStr(c)
                    sH = String$(3 - Len(sH), "0") & sH & "    "
                    sItem = sH & sItem
                    Call List1.AddItem(sItem)
                End If
            End If
        Next
    Next
End Sub

Private Function IsInList(aCol As Collection, strKey As String) As Boolean
  On Error Goto Err1
  
  Call aCol.Add(strKey, strKey)
  If Err.Number = 0 Then Exit Function
  
Err1:
  IsInList = True
End Function
'---------- Ende Formular "Form1" alias Form1.frm  ----------
'-------------- Ende Projektdatei Projekt1.vbp --------------

Tipp-Kompatibilität:

Windows/VB-VersionWin32sWin95Win98WinMEWinNT4Win2000WinXP
VB4
VB5
VB6

Hat dieser Tipp auf Ihrem Betriebsystem und mit Ihrer VB-Version funktioniert?

Ja, funktioniert!

Nein, funktioniert nicht bei mir!

VB-Version:

Windows-Version:

Ihre Meinung  

Falls Sie Fragen zu diesem Artikel haben oder Ihre Erfahrung mit anderen Nutzern austauschen möchten, dann teilen Sie uns diese bitte in einem der unten vorhandenen Themen oder über einen neuen Beitrag mit. Hierzu können sie einfach einen Beitrag in einem zum Thema passenden Forum anlegen, welcher automatisch mit dieser Seite verknüpft wird.