E2185 Überschriebene automatisierte virtuelle Methode '%s' kann kein dispid definieren (Delphi)
Nach oben zu Fehler- und Warnungsmeldungen (Delphi)
Die während der Deklaration der ursprünglichen virtuellen automated-Prozedur deklarierte dispid-Anweisung muss von allen überschreibenden Prozeduren in den abgeleiteten Klassen benutzt werden.
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.
Die überschreibende Deklaration von Base.Automatic in Derived (Derived.Automatic) versucht unzulässigerweise, einen anderen Dispid für die Prozedur zu definieren.
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.
Die Compilierung des Programms wird durchgeführt, wenn die betreffende dispid-Anweisung entfernt wird.