Tipp 0518 Umlaute konvertieren
Autor/Einsender:
Datum:
  Detlev Schubert
04.10.2006
Entwicklungsumgebung:   VB 6
Gerade beim Arbeiten mit unterschiedlichen Schriftsätzen kann das Konvertieren der deutschen Umlaute wichtig und notwendig sein, da bei Zeichensätzen anderer Sprachen oftmals diese Umlaute fehlen. So werden dann je nach verwendetem Schriftsatz entweder falsche oder unleserliche Zeichen wiedergegeben.
Dieser Tipp zeigt, wie Umlaute in Teillaute und zurück konvertiert werden können. Dazu wird für die Umlaute und den äquivalenten Teillauten ein zweidimensionales Datenfeld erstellt. Die Funktion Konvert ist so aufgebaut, dass mittels des optionalen Parameters die Konvertierrichtung bestimmt werden kann. Anschließend wird der zu konvertierende Text zeichenweise durchlaufen.
 
Option Explicit

Private Sub Form_Load()
  Text1.Text = "Über fröhliche Beiträge können sich alle " & _
        "glücklich schätzen." & vbCrLf & vbCrLf & _
        "Für Konfitüre müssen die Äpfel üblicherweise " & _
        "geschält werden."
End Sub

Private Sub Command1_Click(Index As Integer)
  Select Case Index
    Case 0
      Text2.Text = Konvert(Text1.Text)
      Text1.Text = vbNullString
    Case 1
      Text1.Text = Konvert(Text2.Text, 1)
      Text2.Text = vbNullString
  End Select
  Command1(1).Enabled = Command1(1).Enabled Xor -1
  Command1(0).Enabled = Command1(0).Enabled Xor -1
End Sub


Function Konvert(ByVal strTxt As String, _
      Optional Richtung As Byte) As String
  Dim S(5, 1) As String
  Dim strT As String
  Dim lngM As Long
  Dim intN As Integer

  S(0, 0) = "ä"
  S(0, 1) = "ae"
  S(1, 0) = "ö"
  S(1, 1) = "oe"
  S(2, 0) = "ü"
  S(2, 1) = "ue"
  S(3, 0) = "Ä"
  S(3, 1) = "AE"
  S(4, 0) = "Ö"
  S(4, 1) = "OE"
  S(5, 0) = "Ü"
  S(5, 1) = "UE"

  lngM = 0
  Do
    lngM = lngM + 1
    If lngM > Len(strTxt) Then Exit Do

    For intN = 0 To UBound(S)
      Select Case Richtung
      Case 0
        strT = Mid(strTxt, lngM, 1)
        If strT = S(intN, 0) Then
          strTxt = Left(strTxt, lngM - 1) & S(intN, 1) & _
                Mid(strTxt, lngM + 1)
          lngM = lngM + 1
        End If
      Case 1
        strT = Mid(strTxt, lngM, 2)
        If Left(strT, 1) = UCase(Left(strT, 1)) Then
          strT = UCase(strT)
        End If
        If strT = S(intN, 1) Then
          strTxt = Left(strTxt, lngM - 1) & S(intN, 0) & _
                Mid(strTxt, lngM + 2)
          lngM = lngM + 1
        End If
      End Select
    Next
  Loop

  Konvert = strTxt
End Function
 
Weitere Links zum Thema
Zeichenkette in Hex-Wert konvertieren

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  (3 kB) Downloads bisher: [ 259 ]

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: Sonntag, 15. Mai 2011