E2037 La déclaration de '%s' diffère de la déclaration précédente (Delphi)

De RAD Studio
Aller à : navigation, rechercher

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

Ce message d'erreur est produit lorsque la déclaration d'une procédure, fonction, méthode, constructeur ou destructeur diffère de sa précédente déclaration forward.

Ce message d'erreur se produit aussi lorsque vous essayez de redéfinir une méthode virtuelle, mais la méthode redéfinie a une liste de paramètres, une convention d'appel, ou une autre chose différente.



program Produce;

type
  MyClass = class
    procedure Proc(Inx: Integer);
    function Func: Integer;
    procedure Load(const Name: string);
    procedure Perform(Flag: Boolean);
    constructor Create;
    destructor Destroy(Msg: string); override;      (*<-- Message d'erreur ici*)
    class function NewInstance: MyClass; override;  (*<-- Message d'erreur ici*)
  end;

procedure MyClass.Proc(Index: Integer);                            (*<-- Message d'erreur ici*)
begin
end;

function MyClass.Func: Longint;                     (*<-- Message d'erreur ici*)
begin
end;

procedure MyClass.Load(Name: string);               (*<-- Message d'erreur ici*)
begin
end;

procedure MyClass.Perform(Flag: Boolean); cdecl;    (*<-- Message d'erreur ici*)
begin
end;

procedure MyClass.Create;                           (*<-- Message d'erreur ici*)
begin
end;

function MyClass.NewInstance: MyClass;              (*<-- Message d'erreur ici*)
begin
end;

begin
end.

Comme vous pouvez le voir, il existe un certain nombre de raisons pour que ce message d'erreur soit produit.



program Solve;

type
  MyClass = class
    procedure Proc(Inx: Integer);
    function Func: Integer;
    procedure Load(const Name: string);
    procedure Perform(Flag: Boolean);
    constructor Create;
    destructor Destroy; override;                   (*Aucun paramètre*)
    class function NewInstance: TObject; override;  (*Type résultat   *)
  end;

procedure MyClass.Proc(Inx: Integer);               (*Nom de paramètre  *)
begin
end;

function MyClass.Func: Integer;                     (*Type résultat  *)
begin
end;

procedure MyClass.Load(const Name: string);         (*Type de paramètre  *)
begin
end;

procedure MyClass.Perform(Flag: Boolean);           (*Convention d'appel*)
begin
end;

constructor MyClass.Create;                         (*constructeur*)
begin
end;

class function MyClass.NewInstance: TObject;        (*fonction class*)
begin
end;

begin
end.

Vous devez comparer attentivement la 'déclaration précédente' avec celle provoquant l'erreur pour déterminer la différence entre les deux.