Code-Beispiel
ASCII <=> ANSI
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 grindstone angelegt.
- Die aktuellste Version wurde am 05.10.2010 von grindstone gespeichert.
|
|