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.