E2096 Methodenbezeichner erwartet (Delphi)

Aus RAD Studio
Wechseln zu: Navigation, Suche

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.