E2129 読み込み専用プロパティに書き込むことはできません (Delphi)
エラーと警告のメッセージ(Delphi) への移動
値を代入しようとしているプロパティは write 節が指定されていないために読み出し専用プロパティになっています。
program Produce; type Base = class s : String; property Title : String read s; end; var c : Base; procedure DiddleTitle begin if c.Title = then c.Title := 'Super Galactic Invaders with Turbo Gungla Sticks'; (*c.Title に対してその他の作業を行う*) end; begin end.
{ プロパティは write 節を指定していなければ読み出し専用プロパティになる。読み出し専用のプロパティには値を代入できないので,コンパイラは「c.Title」への代入でエラーを出力する }
program Solve; type Base = class s : String; property Title : String read s; end; var c : Base; procedure DiddleTitle var title : String; begin title := c.Title; if Title = then Title := 'Super Galactic Invaders with Turbo Gungla Sticks'; (*Title に対してその他の作業を行う*) end; begin end.
{ ソースコードがある場合には,この読み出し専用プロパティに write 節を指定するのが 1 つの解決方法になる。しかしこの方法は基本クラスの意味を大きく変える恐れがあるので軽々しく実行すべきではない。別の解決方法としては読み出し専用プロパティの値を入れる仲介用の変数を使用する方法がある。例に示したのは,この 2 番めの方法である }