1

$HIGHCHARUNICODE が理由のように見えるUnicode character constantsに関する質問を投稿しました。デフォルトの $HIGHCHARUNICODE OFF (Delphi XE2) を使用すると、次のようになります。

const
  AllLowByteValues =#$00#$01#$02#$03#$04#$05#$06#$07#$08#$09#$0a#$0b#$0c#$0d#$0e#$0f;
  AllHighByteValues=#$D0#$D1#$D2#$D3#$D4#$D5#$D6#$D7#$D8#$D9#$Da#$Db#$Dc#$Dd#$De#$Df;

==> Sizeof(AllLowByteValues[1])  = 2
==> Sizeof(AllHighByteValues[1]) = 2

「すべての 16 進数の #$xx 2 桁リテラルが AnsiChar として解析される」#$80 ... #$FF の場合、なぜ AllHighByteValues は ANSIString ではなく Unicode 文字列なのですか?

4

2 に答える 2

1

これは、文字列定数がPCharUTF-16 要素で構成されているためです。

ドキュメントから:

文字列定数は、Char および WideChar 値のヌル終了配列へのポインターを表す PChar および PWideChar 型との代入互換性があります。

于 2012-09-06T11:39:19.297 に答える