E2140 Doppelter Botschaftsmethoden-Index (Delphi)

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu Fehler- und Warnungsmeldungen (Delphi)

Sie haben für eine dynamische Methode einen Index angegeben, der bereits von einer anderen dynamischen Methode verwendet wird.


program Produce;

  type
    Base = class
      procedure First(VAR x : Integer); message 151;
      procedure Second(VAR x : Integer); message 151;
    end;

  procedure Base.First(VAR x : Integer);
  begin
  end;

  procedure Base.Second(VAR x : Integer);
  begin
  end;

begin
end.

Die Deklaration von Second versucht, denselben Botschaftsindex zu verwenden, der bereits von First verwendet wird. Das ist nicht erlaubt.


program Solve;

  type
    Base = class
      procedure First(VAR x : Integer); message 151;
      procedure Second(VAR x : Integer); message 152; (*eindeutiger Index*)
    end;

    Derived = class (Base)
      procedure First(VAR x : Integer); override; (*Verhalten der Basisklasse überschreiben*)
    end;

  procedure Base.First(VAR x : Integer);
  begin
  end;

  procedure Base.Second(VAR x : Integer);
  begin
  end;

  procedure Derived.First(VAR x : Integer);
  begin
  end;

begin
end.

Für dieses Problem gibt es zwei Lösungen. Wenn Sie denselben Botschaftswert tatsächlich verwenden müssen, können Sie die Botschaftsnummer so ändern, dass sie eindeutig ist. Sie können eine neue Klasse von der Basisklasse ableiten und das Verhalten der dort deklarierten Botschaftsbehandlung ändern. Das obige Beispiel zeigt beide Möglichkeiten.