E2140 Doppelter Botschaftsmethoden-Index (Delphi)
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.