我剛剛發佈了一個關於Unicode character constants的問題,其中$ HIGHCHARUNICODE似乎是原因。 現在用默認的$ HIGHCHARUNICODE OFF(德爾福XE2),這是爲什麼:即使完全由8位字符組成,字符串常量爲什麼使用寬字符?
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
如果 「所有的十六進制#$ XX 2位數的文字被解析爲ANSIChar類型」 爲#$ 80 ...#$ FF,那麼爲什麼AllHighByteValues是一個Unicode字符串而不是ANSIString?
我認爲這些文字被解析爲Ansi並轉換爲Unicode(因爲默認字符串類型是Unicode) – kludg
您的實驗並未真正顯示如何存儲這些值。 SizeOf表達式在編譯時解析,並不實際檢查存儲的值。您需要顯示您定義的字符串實際上是作爲WideChar值*存儲在EXE文件*中的。 –