E2129 読み込み専用プロパティに書き込むことはできません (Delphi)

提供: RAD Studio
移動先: 案内検索

エラーと警告のメッセージ(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 番めの方法である }