E2140 Index de méthode de message dupliqué (Delphi)

De RAD Studio
Aller à : navigation, rechercher

Remonter à Messages d'erreur et d'avertissement (Delphi)

Vous avez spécifié un index pour une méthode dynamique déjà utilisé par une autre méthode dynamique.



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.

La déclaration de 'Second' essaie de réutiliser le même index de message que celui utilisé par 'First'; ce qui est incorrect.



program Solve;

  type
    Base = class
      procedure First(VAR x : Integer); message 151;
      procedure Second(VAR x : Integer); message 152; (*change pour un index unique*)
    end;

    Derived = class (Base)
      procedure First(VAR x : Integer); override; (*remplace le comportement de la classe de base*)
    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.

Il existe deux solutions directes à ce problème. D'abord, si vous n'avez pas vraiment besoin d'utiliser la même valeur de message, vous pouvez changer le numéro de message pour qu'il soit unique. Vous pouvez aussi dériver une nouvelle classe d'une classe de base et redéfinir le comportement du gestionnaire de message déclaré dans la classe de base. Ces deux options se trouvent dans l'exemple précédent.