Einzelnen Beitrag anzeigen

ma2xx

Registriert seit: 25. Nov 2005
22 Beiträge
 
#1

Charater Definition nicht konsistent Char&AnsiChar

  Alt 12. Jan 2012, 09:42
Delphi-Version: XE2
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

Geändert von ma2xx (12. Jan 2012 um 09:43 Uhr) Grund: Delphi Version korrigiert
  Mit Zitat antworten Zitat