Liebe Delphi-Gemeinde,
beim Programmieren mit XE2 bin ich auf folgende Ungereimtheit gestoßen:
Code:
cMyChar1 = 'A'; // For the compiler is this a Char - OK
cMyChar2 ='§'; //$A7 For the compiler is this a AnsiChar - WHY
cMyChar3 ='¯'; //$AF For the compiler is this a AnsiChar - WHY
Diverse Zeichen interpretiert der Compiler als AnsiChar. Warum?
Das fällt besonders bei Verwendung in Funktionen auf:
Code:
StringOfChar( 'A', 10)
ruft die Funktion
function StringOfChar(Ch: WideChar; Count: Integer): UnicodeString; overload;
StringOfChar( '§', 10)
ruft die Funktion
function StringOfChar(Ch: AnsiChar; Count: Integer): AnsiString; overload;
Der untere Aufruf erzeugt nämlich eine Compilerwarnung wegen implizit cast auf string. Denn in der Regel arbeitet man ja mit strings weiter …
Meine BUG-Meldung bei Embarcadero brachte kein zufriedenstellendes Ergebnis.
http://qc.embarcadero.com/wc/qcmain.aspx?d=102347
Ich bin der Meinung, dass das nicht korrekt ist. Alle „typenlosen“ Character-definitionen sollten in einer
UniCode-Welt immer als CHAR kompiliert werden. Was meint Ihr dazu??
Ma2xx