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

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

エラーと警告のメッセージ(Delphi) への移動

値を読み出そうとしているプロパティは read 節が指定されていないために書き込み専用プロパティになっています。


program Produce;

  type
    Base = class
      s : String;

      property Password : String write s;
    end;

  var
    c : Base;
    s : String;

begin
  s := c.Password;
end.

{ c.Password は read 節を指定していないので,その値を読み出せない }


program Solve;

  type
    Base = class
      s : String;

      property Password : String read s write s;
    end;

  var
    c : Base;
    s : String;

begin
  s := c.Password;
end.

{ ソースコードがある場合には,この書き込み専用プロパティに read 節を追加すれば簡単に解決できる。しかし,read 節の追加は望ましくない場合もあり,セキュリティシステムに穴があく恐れもある。たとえば,この例の Password という書き込み専用プロパティを考えてみると,このクラスを使ったプログラムが格納済みパスワードを偶然に読み出すような事態は明らかに望ましくない。プロパティが書き込み専用として作成されている場合にはそのような理由が十分に考えられるので,このプロパティを読み出さなければならない理由を再度検討しなければならない }