为什么仅在将重载过程分配给局部变量后才使用重载过程时会出现 'H2219 Private symbol X declared but never used'?
Why 'H2219 Private symbol X declared but never used' occurs when using an overloaded procedure only after assigning it to a local variable?
我只是在将私有方法分配给局部变量后才使用它:
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 Warning] Unit1.pas(16): H2219 Private symbol 'Test' declared but
never used
为什么会出现H2219警告,避免这种情况的正确方法是什么?
我已经使用 Delphi XE7 对其进行了测试,但无法重现该问题。我认为它已在较新的 IDE 版本中得到修复。
在Delphi 2007下,可以通过打开off/on提示
来避免警告
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
private
{$HINTS OFF}
procedure Test(); overload;
procedure Test(APar : integer); overload;
{$HINTS ON}
end;
我只是在将私有方法分配给局部变量后才使用它:
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 Warning] Unit1.pas(16): H2219 Private symbol 'Test' declared but never used
为什么会出现H2219警告,避免这种情况的正确方法是什么?
我已经使用 Delphi XE7 对其进行了测试,但无法重现该问题。我认为它已在较新的 IDE 版本中得到修复。
在Delphi 2007下,可以通过打开off/on提示
来避免警告 TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
private
{$HINTS OFF}
procedure Test(); overload;
procedure Test(APar : integer); overload;
{$HINTS ON}
end;