假設出於某種不正當的原因想要顯示UTF8String的原始字節內容。Delphi 2009 RawByteString變幻莫測
var
utf8Str : UTF8String;
begin
utf8Str := '€ąćęłńóśźż';
end;
(1)這不這樣做,它顯示可讀形式:
memo1.Lines.Add(RawByteString(utf8Str));
// output: '€ąćęłńóśźż'
(2)然而,這並不 「工作」 - 注意級聯:
memo1.Lines.Add('x' + RawByteString(utf8Str));
// output: 'x€ąćęłńóśźż'
我知道(1),雖然編譯器強制轉向UnicodeString似乎可以防止顯示RawByteString var原樣。但是,爲什麼行爲在(2)中改變?
(3)更奇怪的是 - 讓我們反向串聯:
memo1.Lines.Add(RawByteString(utf8Str) + 'x');
// output: '€ąćęłńóśźżx'
我已經在德爾福新奇的字符串類型讀了,我想我明白他們是如何工作的,但是這是一個謎。
Thans,Barry,這很有道理。級聯只是一個「如果我按下這個按鈕」實驗,沒有任何實際價值。 奇怪的是,雖然看到德爾福引入了這樣一個未定義的行爲 - 從來沒有很多這樣的。 – 2009-01-31 19:22:23