Delphi2009からは文字列が全面的にUnicode文字列に置き換わりました。 どんな感じか見てみましょう。
まず、下図のコードを記述してみます。
実行結果は下図のとおりです。
従来のDelphiでの実行結果は下図のとおりです。
文字インデックスがバイト単位から文字単位になっており、
stringの文字列がWideStringと同様の扱いになっていることがわかります。
続いて、Char型変数に2バイト文字を代入してみます。
下図コードは正しくコンパイルできます。
あたりまえですが、2文字以上、代入することはできません。
下図のコードはコンパイルエラーとなります。
続いてPCharで宣言した文字列も試してみます。
下図のコードを記述してみます。
インデックスの5番目の文字を取り出してみます。
実行結果は下図のとおりです。2バイト文字が取り出されていることがわかります。
string, Char, PcharともにUnicode文字列になっていることがわかります。