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を愛用
掲載日: 2008-09-20
iPentec all rights reserverd.