E2129 Einer Nur-Lesen Eigenschaft kann kein Wert zugewiesen werden (Delphi)

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu Fehler- und Warnungsmeldungen (Delphi)

Sie versuchen, einer Eigenschaft ohne write-Klausel einen Wert zuzuweisen. Eine solche Eigenschaft wird jedoch als Nur-Lesen-Eigenschaft betrachtet.


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';

      (* weitere Aktionen mit c.Title*)
  end;

begin
end.
    

Eigenschaften ohne write-Klausel sind Nur-Lesen-Eigenschaften. Da es nicht möglich ist, einer solchen Eigenschaft einen Wert zuzuweisen, löst die Zuweisung an c.Title eine Fehlermeldung des Compilers aus.


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';
      (* weitere Aktionen mit Title*)
  end;

begin
end.
    

Wenn Sie über den Quelltext verfügen, besteht eine mögliche Lösung darin, für die Eigenschaft eine write-Klausel bereitzustellen. Diese Aktion stellt jedoch eine schwerwiegende Änderung der Basisklasse dar und sollte gut überlegt werden. Eine andere Möglichkeit ist, eine Zwischenvariable einzuführen, die den Wert der Nur-Lesen-Eigenschaft aufnimmt. Der obige Code zeigt dieses Verfahren.