Форум: "Основная";
Текущий архив: 2004.12.12;
Скачать: [xml.tar.bz2];
ВнизError Найти похожие ветки
← →
SDV (2004-11-30 00:05) [0]Подскажите, пожалуйста,
из-за чего и как это исправить
происходит ошибка "Declaration of "AfterPaint" differs from previous declaration"
при попытке установить SynSpellCheck.pas?
В справке Delphi пишут:
This error message occurs when the declaration of a procedure, function, method, constructor or destructor differs from its previous (forward) declaration.
This error message also occurs when you try to override a virtual method, but the overriding method has a different parameter list, calling convention etc.
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; (*<-- Error message here*)
class function NewInstance: MyClass; override; (*<-- Error message here*)
end;
procedure MyClass.Proc(Index: Integer); (*<-- Error message here*)
begin
end;
function MyClass.Func: Longint; (*<-- Error message here*)
begin
end;
procedure MyClass.Load(Name: string); (*<-- Error message here*)
begin
end;
procedure MyClass.Perform(Flag: Boolean); cdecl; (*<-- Error message here*)
begin
end;
procedure MyClass.Create; (*<-- Error message here*)
begin
end;
function MyClass.NewInstance: MyClass; (*<-- Error message here*)
begin
end;
begin
end.
As you can see, there are a number of reasons for this error message to be issued.
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; (*No parameters*)
class function NewInstance: TObject; override; (*Result type *)
end;
procedure MyClass.Proc(Inx: Integer); (*Parameter name *)
begin
end;
function MyClass.Func: Integer; (*Result type *)
begin
end;
procedure MyClass.Load(const Name: string); (*Parameter kind *)
begin
end;
procedure MyClass.Perform(Flag: Boolean); (*Calling convention*)
begin
end;
constructor MyClass.Create; (*constructor*)
begin
end;
class function MyClass.NewInstance: TObject; (*class function*)
begin
end;
begin
end.
You need to carefully compare the "previous declaration" with the one that causes the error to determine what is different between the two.
Что это значит и как это исправить?
← →
GuAV © (2004-11-30 00:07) [1]Ты не тот код привёл.
← →
ЮЮ © (2004-11-30 04:02) [2]Что пишут в справке, не стоит публмковать в форуме.
У тебя проблемы перевода?
AfterPaint по-разному обявлен в interface и implementaition секциях модуля (или вообще отсутствует в implementaition)
← →
Defunct © (2004-11-30 07:39) [3]> Что это значит и как это исправить?
это значит, что процедуры и функции объявленные в классе, должны быть точно также объявлены и в реализации.
проверь если ты объявил в классе метод как procedure, чтобы и в реаизации у тебя было тоже procedure (а не function).
← →
Amoeba © (2004-11-30 11:53) [4]Позволю себе настоятельно рекомендовать автору вопроса словать общепринятым стандартам и имена классов начитать с буквы "T": т.е. не
MyClass = class
а
TMyClass = class
Это не только улучшает читаемость кода, но и позволяет избежать неприятных ляпов при кодировании.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.12.12;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.046 c