Anzeigen: Delphi
C++
Anzeigeeinstellungen
E2037: Deklaration von '%s' unterscheidet sich von vorheriger Deklaration (Delphi)
Aus RAD Studio XE2
Nach oben zu Fehler- und Warnungsmeldungen (Delphi) - Index
Diese Fehlermeldung tritt auf, wenn die Deklaration einer Prozedur, einer Funktion, einer Methode, eines Konstruktors oder eines Destruktors nicht mit der bisherigen (Forward-)Deklaration übereinstimmt.
Diese Fehlermeldung tritt außerdem auf, wenn Sie versuchen, eine virtuelle Methode zu überschreiben, die überschreibende Methode jedoch eine andere Parameterliste, andere Aufrufkonventionen usw. aufweist.
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; (*<-- Hier die Fehlermeldung*)
class function NewInstance: MyClass; override; (*<-- Hier die Fehlermeldung*)
end;
procedure MyClass.Proc(Index: Integer); (*<-- Hier die Fehlermeldung*)
begin
end;
function MyClass.Func: Longint; (*<-- Hier die Fehlermeldung*)
begin
end;
procedure MyClass.Load(Name: string); (*<-- Hier die Fehlermeldung*)
begin
end;
procedure MyClass.Perform(Flag: Boolean); cdecl; (*<-- Hier die Fehlermeldung*)
begin
end;
procedure MyClass.Create; (*<-- Hier die Fehlermeldung*)
begin
end;
function MyClass.NewInstance: MyClass; (*<-- Hier die Fehlermeldung*)
begin
end;
begin
end.
Wie Sie sehen können, gibt es eine ganze Reihe von Ursachen für diese Fehlermeldung.
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; (*Keine Parameter*)
class function NewInstance: TObject; override; (*Ergebnistyp *)
end;
procedure MyClass.Proc(Inx: Integer); (*Parametername *)
begin
end;
function MyClass.Func: Integer; (*Ergebnistyp *)
begin
end;
procedure MyClass.Load(const Name: string); (*Parameterart *)
begin
end;
procedure MyClass.Perform(Flag: Boolean); (*Aufrufkonvention*)
begin
end;
constructor MyClass.Create; (*Konstruktor*)
begin
end;
class function MyClass.NewInstance: TObject; (*Klassenfunktion*)
begin
end;
begin
end.
Sie müssen die 'vorherigen Deklaration' sorgfältig mit der vergleichen, die den Fehler ausgelöst hat, um Unterschiede zwischen den beiden Deklarationen feststellen zu können.