なんらかの理由で、UTF8Stringの生のバイト内容を表示したいとします。
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変数をそのまま表示できなくなるようです。しかし、なぜ(2)で動作が変わるのでしょうか。
(3)見知らぬ人はまだ-連結を逆にしましょう:
memo1.Lines.Add( RawByteString( utf8Str ) + 'x' );
// output: '€ąćęłńóśźżx'
私はDelphiの新しい文字列タイプを読んでいて、それらがどのように機能するかを理解していると思いましたが、これはパズルです。