E2147 Eigenschaft '%s' existiert nicht in Basisklasse (Delphi)

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu Fehler- und Warnungsmeldungen (Delphi)

Der Compiler nimmt an, dass Sie versuchen, eine Eigenschaft auf eine andere, höhere Sichtbarkeitsebene in einer abgeleiteten Klasse zu stellen, aber diese Klasse ist in der Basisklasse nicht vorhanden.


program Produce;

  type
    Base = class
    private
      a: Integer;
      property BaseProp : integer read a write a;
    end;

    Derived = class (Base)
      ch : Char;
      property Alpha read ch write ch; (*Fall 1*)
      property BesaProp; (*Fall 2*)
    end;

begin
end.

Für diesen Fehler gibt es zwei Hauptursachen. Zum einen tritt er durch Festlegung einer neuen Eigenschaft ohne Festlegung eines Typs auf; dies wird in der Regel nicht als Verschiebung auf eine andere Sichtbarkeitsebene angesehen. Die zweite Ursache liegt in der Festlegung einer Eigenschaft, die sich in der Basisklasse befinden sollte, aber nicht vom Compiler gefunden werden kann; am häufigsten ist ein Schreibfehler hierfür verantwortlich (z. B. in "BesaProp"). Bei der zweiten Ursache gibt der Compiler außerdem Fehlermeldungen aus, dass eine Lese- oder Schreibanweisung erwartet wird.


program Solve;

  type
    Base = class
    private
      a: Integer;
      property BaseProp : integer read a write a;
    end;

    Derived = class (Base)
      ch : Char;
    public
      property Alpha : Char read ch write ch; (*Fall 1*)
      property BaseProp; (*Fall 2*)
    end;

begin
end.

Die Lösung im ersten Fall ist die Angabe eines Typs für die Eigenschaft. Im zweiten Fall liegt die Lösung darin, die Schreibweise der Bezeichnung der Eigenschaft zu überprüfen.