E2185 Overriding automated virtual method '%s' cannot specify a dispid (Delphi)
Go Up to Error and Warning Messages (Delphi)
The dispid declared for the original virtual automated procedure declaration must be used by all overriding procedures in derived classes.
program Produce;
type
Base = class
automated
procedure Automatic; virtual; dispid 151;
end;
Derived = class (Base)
automated
procedure Automatic; override; dispid 152;
end;
procedure Base.Automatic;
begin
end;
procedure Derived.Automatic;
begin
end;
begin
end.
The overriding declaration of Base.Automatic, in Derived (Derived.Automatic) erroneously attempts to define another dispid for the procedure.
program Solve;
type
Base = class
automated
procedure Automatic; virtual; dispid 151;
end;
Derived = class (Base)
automated
procedure Automatic; override;
end;
procedure Base.Automatic;
begin
end;
procedure Derived.Automatic;
begin
end;
begin
end.
By removing the offending dispid clause, the program will now compile.