Tutorial
Umlaute richtig darstellen
von Eternal_Pain | Seite 2 von 2 |
Nun, wir könnten unsere Texte in Zukunft in etwa so schreiben;
?"Im Garten haben wir einen Apfelbaum, mit unglaublich vielen "+chr(142)+"pfeln."
Die Ausgabe sollte nun so aussehen;
Im Garten haben wir einen Apfelbaum, mit unglaublich vielen Äpfeln.
Das sieht doch schon ganz gut aus :o)
Aber auf Dauer doch recht umständlich, wie ich persönlich finde.
Viel einfacher würde es doch gehen, wenn wir eine Funktion hätten, die uns die Arbeit abnehmen könnte?!
Wer mit Windows arbeitet, wird sich freuen, zu hören, dass es dafür bereits eine Funktion gibt :o)
An dieser Stelle vielen Dank an Volta.
Beispiel:
#INCLUDE "windows.bi"
'Hier Deklarieren wir uns einen String in den wir ganz normal unseren Text schreiben.
DIM MeinText AS String
'Wir schreiben mit unseren ANSI Zeichen einen Beispiel Text
MeinText="ABCdefÄÖÜäöüéÉ"
'Hier wird der ANSI Text ins ASCII Format uebersetzt!
CharToOem MeinText, MeinText
'Die übersetzte Ausgabe auf den Bildschirm bringen
?MeinText
sleep
Das sieht doch hervorragend aus, alle Umlaute werden nun richtig angezeigt. Aber was mach ich nun, wenn ich kein Windows nutze oder nicht auf die Windows API zugreifen kann oder will?
Da bleibt einem nichts anderes übrig, als diese Funktion selbst zu schreiben.
Ich bin doch aber sicher nicht der Erste mit diesem Problem, da muss es doch schon was Fertiges geben?
Richtig! Das gibt es wirklich :o)
Hier einmal eine Version von ytwinky,
die im durchschnitt nicht nur kaum messbare ms schneller war
als eine von mir, nein, sie sieht dazu auch noch viel besser aus ;o)
FUNCTION uANSI2ASCII (BYVAL ConvertString AS STRING) AS STRING
DIM AS STRING OutString=ConvertString
Static As UByte AscAnsDat(128)={ _
63, 63, 39, 159, 34, 46, 197, 206, 94, 37, 83, 60, 79, 63, 63, 63, _
90, 39, 39, 34, 34, 7, 45, 45, 126, 84, 115, 62, 111, 63, 122, 89, _
255, 173, 189, 156, 207, 190, 221, 145, 149, 184, 166, 174, 170, 240, 169, 238, _
248, 241, 253, 252, 239, 230, 244, 250, 247, 251, 167, 175, 172, 171, 243, 168, _
183, 181, 182, 199, 142, 143, 146, 128, 212, 144, 210, 211, 222, 214, 215, 216, _
209, 165, 227, 224, 226, 229, 153, 158, 157, 235, 233, 234, 154, 237, 232, 160, _
225, 133, 131, 198, 132, 134, 145, 135, 138, 130, 136, 137, 141, 161, 140, 139, _
208, 164, 149, 162, 147, 228, 148, 246, 155, 151, 163, 150, 129, 236, 231, 152}
FOR i AS INTEGER=0 TO LEN(OutString)-1
If OutString[i]>127 Then OutString[i]=AscAnsDat(OutString[i]-128)
NEXT i
RETURN OutString
END FUNCTION
Hier findet Ihr auch noch eine version von mir
myANSI2ASCII
Viel Spass damit :o)
Zusätzliche Informationen und Funktionen | |||||||
---|---|---|---|---|---|---|---|
|
|