很奇怪的是,之前编译一直都没有问题,可是,今天编译的时候,就出现这个错误,并且是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也可以编译通过,不知道是什么原因。