Declaration of ‘%s’ differs from previous declaration (E2037)

       很奇怪的是,之前编译一直都没有问题,可是,今天编译的时候,就出现这个错误,并且是delphi7和Delphi 2007都是同样的错误。

根据帮助文档,只要确认声明和实现的函数名、参数名、参数类型,参数修饰、返回值等一样,就是说所有都一样,基本上就不会产生这个错误了。可是很不幸的,还是让我碰上了。

代码如下:

  public
    procedure ShowSubForm(AFormClass: TFormClass);

procedure TFrmMain.ShowSubForm(AFormClass: TFormClass);
begin
  if self.PanelMain.ControlCount > 0 then
  begin
    if PanelMain.Controls[0].ClassName = AFormClass.ClassName then
      Exit;
    Screen.Cursor := crHourGlass;
    PanelMain.Controls[0].Free;
  end;

  with AFormClass.Create(Application) do
  begin
    Visible := False;
    Screen.Cursor := crDefault;
    Parent := Self.PanelMain;
    BorderStyle := bsNone;
    Align := alClient;
    FrmMain.Caption := Caption;
    Show;
  end;
end;
经过仔细比对,可以确定,函数模样完全一致。
通过添加函数进行测试,发现,只要参数类型是TFormClass就会出现这个编译错误,甚至是TClass也可以编译通过,不知道是什么原因。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据