Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Declaration of ~ differs from previous declaration


Автор: Keeper89 11.10.2009, 22:00
Доброго времени суток.

Стала проявляться ошибка для 2 методов:
Код

[DCC Error] uTHistory.pas(329): E2037 Declaration of 'ConvertPathFromHistory' differs from previous declaration
[DCC Error] uTHistory.pas(376): E2037 Declaration of 'SetSTVPath' differs from previous declaration


При этом в объявление идет как положено:
Код

  TBrowserHistory = class(TObject)
    private
      {...}
    public
      {...}
      property CurrentPath: AnsiString read GetCurrentPath;

      function ConvertPathFromHistory
                    (hPath: AnsiString; STV: TShellTreeView): TTreeNode;
      procedure SetSTVPath(hPath: AnsiString; STV: TShellTreeView);
  end;

{...}

implementation

{...}

function TBrowserHistory.ConvertPathToHistory
                                  (curNode: TTreeNode): AnsiString;

function TBrowserHistory.ConvertPathFromHistory
                    (hPath: AnsiString; STV: TShellTreeView): TTreeNode; 

В чем может быть проблема?

Автор: Alexeis 11.10.2009, 22:12
function TBrowserHistory.ConvertPathToHistory
                                  (curNode: TTreeNode): AnsiString;
где его реализация? Не пропущен бегин енд ?

Автор: Keeper89 11.10.2009, 22:43
Alexeis, нет там полная реализация, я просто ее опустил.

Добавлено через 1 минуту и 38 секунд
Т.е. так:
Код

  TBrowserHistory = class(TObject)
    private
      {...}
    public
      {...}
      property CurrentPath: AnsiString read GetCurrentPath;
      function ConvertPathFromHistory
                    (hPath: AnsiString; STV: TShellTreeView): TTreeNode;
      procedure SetSTVPath(hPath: AnsiString; STV: TShellTreeView);
  end;
{...}
implementation
{...}
function TBrowserHistory.ConvertPathToHistory
                                  (curNode: TTreeNode): AnsiString;
begin
  //
end;

function TBrowserHistory.ConvertPathFromHistory
                    (hPath: AnsiString; STV: TShellTreeView): TTreeNode;
begin
  //
end;

Автор: Alexeis 11.10.2009, 22:52
проверь все пары begin end.

Автор: CodeMonkey 11.10.2009, 23:00
Возможно, что TShellTreeView в interface и в implementation - разные. Проверить просто: перенесите uses из implementation в interface. Если ошибка пропадёт - смотрите поиском, где объявлен TShellTreeView.

Автор: Keeper89 11.10.2009, 23:33
CodeMonkey, спасибо, ваш телепатор оказался прав! smile
Я действительно переопределяю некоторые методы для TShellTreeView на форме, и здесь в объявление попадает стандартный (ShellCtrls.TShellTreeView), а в реализацию - (MainForm.TShellTreeView).

Заменил везде в классе
Код

STV: TShellTreeView

на
Код

STV: ShellCtrls.TShellTreeView

Думаю такое решение приемлемо. Если нет - готов выслушать рекомендации.  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)