E2096 Methodenbezeichner erwartet (Delphi)
Nach oben zu Fehler- und Warnungsmeldungen (Delphi)
Dieser Fehler kann in verschiedenen Situationen auftreten:
- Eigenschaften in einem automated-Abschnitt müssen Zugriffsmethoden haben. Sie dürfen in ihren read- oder write-Klauseln keine Felder verwenden.
- Sie versuchen, eine Klassenmethode mit der Syntax "Klassentyp.Methodenname" aufzurufen, aber "Methodenname" ist kein Methodenname.
- Sie versuchen, eine geerbte Methode mit der Syntax "Inherited Methodenname" aufzurufen, aber "Methodenname" ist kein Methodenname.
program Produce; type TMyBase = class Field: Integer; end; TMyDerived = class (TMyBase) Field: Integer; function Get : Integer; Automated property Prop: Integer read Field; (*<-- Hier die Fehlermeldung*) end; function TMyDerived.Get: Integer; begin Result := TMyBase.Field; (*<-- Hier die Fehlermeldung*) end; begin end.
In diesem Beispiel wird eine automated-Eigenschaft deklariert, die direkt auf ein Feld zugreift. Der zweite Fehler wird durch den Zugriff auf ein Feld der Basisklasse verursacht – auch dies ist nicht erlaubt.
program Solve; type TMyBase = class Field: Integer; end; TMyDerived = class (TMyBase) Field: Integer; function Get : Integer; Automated property Prop: Integer read Get; end; function TMyDerived.Get: Integer; begin Result := TMyBase(Self).Field; end; begin Writeln( TMyDerived.Create.Prop ); end.
Das erste Problem wird dadurch behoben, dass für den Zugriff auf das Feld eine Methode verwendet wird. Das zweite Problem wird behoben, indem der Zeiger Self in den Typ der Basisklasse konvertiert wird und erst dann der Zugriff auf das Feld erfolgt.