E2037 La déclaration de '%s' diffère de la déclaration précédente (Delphi)
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.