Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - FAQ - Zum CC1-Forum - Zum CC-Pro-Forum

Re: Umlaute und Stringkonstanten Kategorie: Programmierung (von André H. - 16.07.2008 14:07)
Als Antwort auf Umlaute und Stringkonstanten von Werner - 13.07.2008 14:54
Ich nutze:
C-Control II Unit, C164CI-ControllerBoard, C-Control II Station, CC2-Application-Board, CC2-StarterBoard, CC2-ReglerBoard, OSOPT V3.1
Hallo Werner,

> habe da was gefunden und auch eine Lösung, aber keine Erklärung.
> Vielleicht kann mir irgend wer sagen, warum das so ist.
>
> Hatte ein paar Texte für eine Menüeingabe als Konstanten-Array definiert.
> AnschlieÃ?end ausgegeben. Die Umlaute werden dabei als Escape-Sequenzen codiert.
> ä = xe1
> ö = xef
> ü = xf5
> Ã? = xe2
>
> Jedoch ist statt einem ü das Yen-Zeichen heraus gekommen (durchgestrichenes Y)
> Also habe ein wenig getestet und musste feststellen, dass die Escape-Sequenzen
> richtig waren. Jedoch muss ich den String zusammensetzen.
> ...
>
> const MENU1[] = "0: Zurxf5ck       ", "1: Datum stellen";

> ...
> Kann mir einer sagen, warum der Compiler in der Variante MENU1 das ü falsch interpretiert
> und in den Varianten MENU2 und MENU3 richtig? Ich ging bis dato davon aus, dass ein
> Escape-Wert mit x eingeleitet stets ein zweistelligen Hex-Wert erwartet. (Kenn ich so von
> anderen Sprachen)

In C2 ist das leider etwas anders. Es werden alle als Ziffern erkannte Zeichen nach
dem Escape berücksichtigt, dann aber auf 8 Bit "gestutzt".
Bei "Zurxf5ck" ist dies eben xf5c, was wieder als 0x5c im
String umgesetzt wird.
Es gibt hierfür zwei Lösungen:
1. Die Zahl in Dezimal schreiben als in Hexadezimal. Das wäre dann "Zur245ck".
2. Den String mit zwei Anführungszeichen absetzen, wenn nachfolgend eine Ziffer
    oder der Buchstabe a bis c kommt, was dann so aussehen würde:
 const MENU1[] = "0: Zurxf5""ck       ", ...;

Ich bevorzuge meist letztere Variante.
Aber, welche der beiden man einsetzt, ist vom Ergebnis egal.
Nur bei der Ersten Variante dürfen eben keine weiteren Ziffern folgen,
sonst greift Automatisch Variante zwei. :-)

MfG André H.



Antworten bitte nur ins Forum!
Fragen per EMail auf Forum-Postings werden nicht beantwortet!

Das macht meine Heizung gerade


    Antwort schreiben


Antworten: