delphi - 为什么仅在将重载过程分配给局部变量后才使用重载过程时会出现 'H2219 Private symbol X declared but never used'?

标签 delphi overloading compiler-warnings delphi-2007

我仅在将私有(private)方法分配给局部变量后才使用它:

  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 下,可以通过关闭/打开提示来避免警告

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

关于delphi - 为什么仅在将重载过程分配给局部变量后才使用重载过程时会出现 'H2219 Private symbol X declared but never used'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50374230/

相关文章:

delphi - 如何在 RichEdit 中保存然后恢复垂直滚动位置

function - 具有多个调用签名的 TypeScript 接口(interface)

c - C99 不支持函数重载有什么原因吗?

delphi - 如何从DLL导出重载函数?

c++ - -Wunused-variable 编译器说错误

delphi - 为什么 ReadLn 没有为 Delphi 中的所有变量赋值?

xml - Delphi Xpath XML 查询

c++ - 在 C/C++ 中实现 UNUSED 宏的通用编译器独立方式

C# 编译器警告 1685

delphi - 显示特定区域字符