打开窗体时提示 Abstract Error ( 积分: 10 )

  • 主题发起人 主题发起人 publicnews
  • 开始时间 开始时间
P

publicnews

Unregistered / Unconfirmed
GUEST, unregistred user!
一个工程(使用了窗体继承),编译后运行有时会出这个"Abstract Error"
只是偶而出现,这样跟踪也跟踪不出来啊,请大侠们帮忙
这倒底是哪里的问题哟
我用的是Delphi 7+Win2003
另外这两天升级到2003,Project 菜单的Options不能用了,访问错误
 
一个工程(使用了窗体继承),编译后运行有时会出这个"Abstract Error"
只是偶而出现,这样跟踪也跟踪不出来啊,请大侠们帮忙
这倒底是哪里的问题哟
我用的是Delphi 7+Win2003
另外这两天升级到2003,Project 菜单的Options不能用了,访问错误
 
父窗口中的一些抽象元素没有Override
 
我找找看
 
都已经override了
可还是会出错呢
 
按照这个提示估计和抽象方法Inherited有关
或者是某个抽象类创建实例了

既然是偶尔出现,你应该让错误重现以找到问题
 
就是偶而出现, 所以不知道哪里的问题,也不知道如何让其重现
 
那你就只能按照大家的提示好好检查代码了
 
这个问题我碰到过,第一个是祖先窗体里的抽象方法在后代类种没有override,另外一个情况就是Inherited用得不正确。举个例子说明吧
TAncesForm = class(TForm)
public
constructor Create(AOwner: TComponent);virtual;abstract;
end;

TFindForm = class(TAncesForm)
public
constructor Create(AOwner: Tcomponent);override;
end;

constructor TFindForm.Create(AOwner: TCompoent);
begin
Inherited Create(AOwner);
...
end;

问题出在 Inherited Create(AOwner)这句代码,因为祖先类的此方法是个抽象方法,所以会出现一个抽象错误,如果你使用 Inherited
这样的话,祖先类中是抽象方法,根本编译不到,如果不是抽象方法,就可以编译到。相信你的问题就是如此
 
在继函过来的窗体里面没有抽象方法
这是声明(说明一下,我最上面的祖先窗体是frmBase,没有覆盖Create,frmBase的子类TfrmCommon有如下声明,其它的窗体都是从TfrmCommon继承的)

constructor Create(AOwner: TComponent)
override;
 
多人接受答案了。
 
后退
顶部