Delphi 2009 の文字列 (Unicode) (2)

Delphi2009ではString型はUnicode文字列として扱われます。文字列を以前の形式で扱う場合を試してみましょう。 まず、下図コードを記述します。
Delphi 2009 の文字列 (Unicode) (2):画像1
文字列をAnsiString型で宣言しました。 このコードを実行すると、結果は下図となります。 Unicodeでない文字列として処理されます。
Delphi 2009 の文字列 (Unicode) (2):画像2
この方法で動作はしますが、コンパイル時に下図の警告メッセージが表示されます。暗黙的キャストがされたという内容のメッセージです。これはEdit1.textプロパティがString型であるので、AnsiStringを代入しようとすることで警告が発生します。
Delphi 2009 の文字列 (Unicode) (2):画像3
警告を回避するには、下図のコードのように、String型で明示的にキャストする必要があります。
Delphi 2009 の文字列 (Unicode) (2):画像4

続いて、AnsiChar型の場合をみてみます。 下図のコードはAnsiCharに2バイト文字を代入するコードです。
Delphi 2009 の文字列 (Unicode) (2):画像5
上記のコードはコンパイルが通ります。が、下図の情報が失われたという内容の警告メッセージが表示されます。
Delphi 2009 の文字列 (Unicode) (2):画像6
ちなみに2文字以上の代入はできません。
Delphi 2009 の文字列 (Unicode) (2):画像7
また、1バイト文字2文字の代入もコンパイルエラーとなります。
Delphi 2009 の文字列 (Unicode) (2):画像8
1バイト文字1文字の代入は警告メッセージは表示されず代入されます。
Delphi 2009 の文字列 (Unicode) (2):画像9

PAnsiChar型の場合も見てみましょう。下図のコードを記述します。
Delphi 2009 の文字列 (Unicode) (2):画像10
このコードはコンパイルが通りますが、下図の暗黙的なキャスト警告が表示されます。
Delphi 2009 の文字列 (Unicode) (2):画像11
下図のコードのとおりにString型で明示的にキャストします。
Delphi 2009 の文字列 (Unicode) (2):画像12
実行結果は下図のとおりです。バイト文字の文字列として処理されます。
Delphi 2009 の文字列 (Unicode) (2):画像13

AuthorPortraitAlt
著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用
作成日: 2008-09-20
Copyright © 1995–2025 iPentec all rights reserverd.