Delphi 2009 の文字列 (Unicode) (2) - Delphi 2009
Delphi2009ではString型はUnicode文字列として扱われます。文字列を以前の形式で扱う場合を試してみましょう。
まず、下図コードを記述します。
文字列をAnsiString型で宣言しました。
このコードを実行すると、結果は下図となります。
Unicodeでない文字列として処理されます。
この方法で動作はしますが、コンパイル時に下図の警告メッセージが表示されます。暗黙的キャストがされたという内容のメッセージです。これはEdit1.textプロパティがString型であるので、AnsiStringを代入しようとすることで警告が発生します。
警告を回避するには、下図のコードのように、String型で明示的にキャストする必要があります。
続いて、AnsiChar型の場合をみてみます。
下図のコードはAnsiCharに2バイト文字を代入するコードです。
上記のコードはコンパイルが通ります。が、下図の情報が失われたという内容の警告メッセージが表示されます。
ちなみに2文字以上の代入はできません。
また、1バイト文字2文字の代入もコンパイルエラーとなります。
1バイト文字1文字の代入は警告メッセージは表示されず代入されます。
PAnsiChar型の場合も見てみましょう。下図のコードを記述します。
このコードはコンパイルが通りますが、下図の暗黙的なキャスト警告が表示されます。
下図のコードのとおりにString型で明示的にキャストします。
実行結果は下図のとおりです。バイト文字の文字列として処理されます。
著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用