E2130 Lesen einer Nur-Schreiben-Eigenschaft nicht möglich (Delphi)

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu Fehler- und Warnungsmeldungen (Delphi)

Sie versuchen, den Wert einer Eigenschaft ohne read-Klausel zu lesen. Eine solche Eigenschaft wird jedoch als Nur-Schreiben-Eigenschaft betrachtet.


program Produce;

  type
    Base = class
      s: String;

      property Password : String write s;
    end;

  var
    c : Base;
    s: String;

begin
  s := c.Password;
end.

Da die Eigenschaft c.Password über keine read-Klausel verfügt, kann ihr Wert nicht gelesen werden.


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.

Wenn Sie über den Quelltext verfügen, besteht eine einfache Lösung für dieses Problem darin, der Nur-Schreiben-Eigenschaft eine read-Klausel hinzuzufügen. Diese Lösung ist jedoch nicht immer ratsam, da sie zu Sicherheitslücken führen kann. Betrachten Sie beispielsweise eine Nur-Lesen-Eigenschaft mit dem Namen Passwort. Sicherlich ist es nicht sinnvoll, einem Programm zu erlauben, diese Klasse zum Lesen und Speichern von Passwörtern zu benutzen. Wenn eine Eigenschaft nicht gelesen werden kann, gibt es also möglicherweise einen guten Grund dafür.