Buchempfehlung
Windows System Programming
Windows System Programming
Das Kompendium liefert viele interessante Informationen zur Windows-Programmierung auf Englisch. [Mehr Infos...]
FreeBASIC-Chat
Es sind Benutzer im FreeBASIC-Chat online.
(Stand:  )
FreeBASIC bei Twitter
Twitter FreeBASIC-Nachrichten jetzt auch über Twitter erhalten. Follow us!

Code-Beispiel

Code-Beispiele » Stringfunktionen

ASCII <=> ANSI

Lizenz:Erster Autor:Letzte Bearbeitung:
FBPSLMitgliedgrindstone 05.10.2010

ASCII <=> ANSI

Hier ein weiteres Programm zur ASCII / ANSI -Umwandlung. Die Besonderheit daran ist, daß es in beide Richtungen funktioniert, es können also auch von einem Konsolenprogramm aus Windows-Dateien korrekt erstellt oder umbenannt werden, oder man kann Winamp auch dann starten, wenn der Titel Umlaute enthält. Außerdem ist der Zeichenvorrat auf die wirklich benötigten Zeichen beschränkt, was enorm Rechenzeit spart. Der Zeichenvorrat ist in einer separaten .ini - Datei abgelegt und kann so ohne Neukompilierung des Programms an die individuellen Bedürfnisse angepasst werden.
Der Quelltext ist so gestaltet, daß er in einem Modul mit der Endung .bas ( z.B. "fbm_sonderzeichen.bas") abgespeichert werden kann und dann nur noch per #Include in das eigene Programm eingebunden werden muß. Außerdem muß die "sonderzeichen.ini" zur Ausführungszeit im selben Pfad stehen wie das kompilierte Programm.

Wer Spaß daran hat, kann je eine "sonderzeichen.ini" mit dem kompletten Zeichensatz erstellen.

Hier das Programm:

Declare Function ascii2ansi(text As String) As String
Declare Function ansi2ascii(text As String) As String

Dim Shared As String sonderzeichenascii, sonderzeichenansi 'diese beiden
'Variablen sollen im gesamten Programm zur Verfügung stehen

Variablen initialisieren
sonderzeichenascii = ""
sonderzeichenansi = ""

Scope 'mit lokalen Variablen arbeiten
  Dim As Integer x, dn
  Dim As String g, datei

  dn = FreeFile
  datei = ExePath + "\sonderzeichen.ini" 'die Datei muß "sonderzeichen.ini"
                                         'heißen und im selben Verzeichnis
                                         'stehen wie das aufrufende Programm

  If Open (datei For Input As #dn) Then 'prüfen, ob "sonderzeichen.ini"
                                        'vorhanden ist...
    '...wenn nicht, defaultwerte setzen
    sonderzeichenascii = Chr$(228,196,246,214,252,220,223) 'äÄöÖüÜß
    sonderzeichenansi = Chr$(132,142,148,153,129,154,225)
    Print
    Print "***** FEHLER: Datei > ";ascii2ansi(datei);" < nicht gefunden"
    Print
    Print Tab(15);"Es wird der Defaultmodus geladen, in dem nur"
                  'Die Umwandlung funktioniert an dieser Stelle schon. Hier
                  'gleich ein Beispiel, wie die Funktion aufgerufen wird
    Print Tab(15);ascii2ansi("die Umlaute und das 'ß' zur Verfügung stehen")

    Print
    Print
    Print Tab(15);"weiter mit beliebiger Taste"
    Sleep
    g = InKey$ 'tastaturpuffer leeren
  Else
    'sonderzeichentabelle einlesen
        x = 1
        Do
          Do 'wert suchen
            Line Input #dn, g
            If InStr(g,";") Then 'kommentar und leerzeichen entfernen
              g = Left$(g,InStr(g,";")-1)
              g = Trim(g)
            End If
          Loop Until Len(g) Or Eof(dn)
          sonderzeichenascii += Chr$(Val(Left$(g,InStr(g,",")-1))) 'erster wert (ASCII)
          sonderzeichenansi += Chr$(Val(Mid$(g,InStr(g,",")+1))) 'zweiter wert (ANSI)
          x += 1
          If Eof(dn) Then 'wenn Sonderzeichentabelle zuende, Einlesen beenden
            Close #dn
            Exit Do
          EndIf
        Loop
  EndIf
End Scope

Function ansi2ascii(text As String) As String
'wandelt Sonderzeichen vom ansi- ins ascii-Format

  Dim As Integer x, y
  Dim As String g

  g = text
  For x = 0 To Len(g) - 1 'String Zeichen für Zeichen abarbeiten
    For y = 0 To Len(sonderzeichenansi) - 1 'Sonderzeichentabelle abarbeiten
        If g[x] = sonderzeichenansi[y] Then 'Sonderzeichen gefunden
        g[x] = sonderzeichenascii[y] 'Sonderzeichen tauschen
        Exit For 'Schleife beenden (spart Rechenzeit)
        EndIf
    Next
  Next
  Return g 'umgewandelten String zurückgeben

END Function

Function ascii2ansi(text As String) As String
'wandelt Sonderzeichen vom ascii- ins ansi-Format

  Dim As Integer x, y
  Dim As String g

  g = text
  For x = 0 To Len(g) - 1
    For y = 0 To Len(sonderzeichenascii) - 1
        If g[x] = sonderzeichenascii[y] Then
        g[x] = sonderzeichenansi[y]
        Exit For
        EndIf
    Next
  Next
  Return g

End Function

Und hier noch die "sonderzeichen.ini":

;ini-datei für sonderzeichen

; ascii,ansi
228,132 ;„ ä
196,142 ;” Ä
246,148 ;” ö
214,153 ;™ Ö
252,129 ; ü
220,154 ;š Ü
223,225 ;á ß
237,161 ;¡ í
233,130 ;‚ é
241,164 ;± ñ

Zusätzliche Informationen und Funktionen
  • Das Code-Beispiel wurde am 05.10.2010 von Mitgliedgrindstone angelegt.
  • Die aktuellste Version wurde am 05.10.2010 von Mitgliedgrindstone gespeichert.
  Bearbeiten Bearbeiten  

  Versionen Versionen