Почему «H2219 закрытый символ X объявлен, но никогда не использовался» возникает при использовании перегруженной процедуры только после присвоения ее локальной переменной? - PullRequest
0 голосов
/ 16 мая 2018

Я использую закрытый метод только после присвоения его локальной переменной:

  TMyTestWithoutParam = procedure() of object;
  TMyTestIntegerParam = procedure(APar : integer) of object;
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    procedure  Test(); overload;
    procedure  Test(APar : integer); overload;
  end;

...

procedure TForm1.FormCreate(Sender: TObject);
var
  TmpA : TMyTestWithoutParam;
  TmpB : TMyTestIntegerParam;
begin
  TmpA := Test;
  TmpA();

  TmpB := Test;
  TmpB(1);
end;

procedure  TForm1.Test();
begin
  //...
end;

procedure  TForm1.Test(APar : Integer);
begin
  //...
end;

При компиляции он вызывает H2219 предупреждающее сообщение:

[Предупреждение DCC] Unit1.pas (16): H2219 Закрытый символ «Тест» объявлен, но никогда не используется

Почему H2219 Предупреждение появляется, и как правильно этого избежать?

1 Ответ

0 голосов
/ 16 мая 2018

Я протестировал его с помощью Delphi XE7 и не могу воспроизвести проблему.Я думаю, что это было исправлено в более новых версиях IDE.

В Delphi 2007 предупреждение можно избежать, отключив / включив подсказки

  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    {$HINTS OFF}
    procedure  Test(); overload;
    procedure  Test(APar : integer); overload;
    {$HINTS ON}
  end;
...