E2096 Method identifier expected (Delphi)

From RAD Studio
Jump to: navigation, search

Go Up to Error and Warning Messages (Delphi)

This error message will be issued in several different situations:

  • Properties in an automated section must use methods for access, they cannot use fields in their read or write clauses.
  • You tried to call a class method with the "ClassType.MethodName" syntax, but "MethodName" was not the name of a method.
  • You tried calling an inherited with the "Inherited MethodName" syntax, but "MethodName" was not the name of a method.


program Produce;
type
 TMyBase = class
 Field: Integer;
 end;
 TMyDerived = class (TMyBase)
 Field: Integer;
 function Get: Integer;
 Automated
 property Prop: Integer read Field; (*<-- Error message here*)
 end;
function TMyDerived.Get: Integer;
begin
 Result := TMyBase.Field; (*<-- Error message here*)
end;
begin
end.

The example tried to declare an automated property that accesses a field directly. The second error was caused by trying to get at a field of the base class - this is also not legal.


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.

The first problem is fixed by accessing the field via a method. The second problem can be fixed by casting the Self pointer to the base class type, and accessing the field off of that.

Retrieved from "https://docwiki.embarcadero.com/RADStudio/Tokyo/e/index.php?title=E2096_Method_identifier_expected_(Delphi)&oldid=257209"