E2129 Einer Nur-Lesen Eigenschaft kann kein Wert zugewiesen werden (Delphi)
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.