abstract error的问题 创建了一个类,并为其设计了Constructor与destroy方法,在执行Destroy方法中跟踪没一行代码没有报错,在Destroy方法执行完闭以后,报错'adStract error',我的Destroy方法是使用override的啊,请问这是怎么会事情啊? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 写错了,请见下面! 创建了一个类,并为其设计了Constructor与destroy方法,在执行Destroy方法中跟踪每一行代码,没有一行报错,在Destroy方法执行完毕以后,报错'adStract error',我的Destroy方法是使用override的啊,请问这是怎么会事情啊? 我的类是这样的,创建一个带有tabsheet,wabBrowser,等的一个类,来显示多页面的浏览器.type TView=class public Constructor Creat(AOwner:Tcomponent;Aparent:TPageControl;Var ppDisp:IDispatch); Destructor Destroy();Override; private //要创建的几个组件 myTab:TTabSheet; myStatusBar:TStatusBar; myWebBrowser:TWebBrowser; //要引用的几个组件 myPageControl:TPageControl; myComponent:Tcomponent ......end;在构造函数中有:Constructor Tview.Creat(AOwner:Tcomponent;Aparent:TPageControl;Var ppDisp:IDispatch);begin //赋值 self.myComponent:=AOwner; self.myPageControl:=Aparent; //创建 myTab:= TTabSheet.Create(AOwner); myTab.PageControl := AParent; myStatusBar:=TStatusBar.Create(mytab); myWebBrowser:=TWebBrowser.Create(mytab); //显示网页 ppDisp:=mywebBrowser.Application; mywebBrowser.ParentWindow:=mytab.Handle; ..............end;//析够函数有Destructor TView.Destroy;begin mytab.free;end;现在我的代码都可以通过,运行也正常,但是在释放一个对象的时候我调用self.free;以后就报错误'abstract error',是不是我引用对象的方法有错误呢?请各位高手指教! 我跟踪了,在释放的时候是在执行完mytab.free以后,才报的错,这是怎么回事情呢? Destructor TView.Destroy;begin myWebBrowser.free; myStatusBar.free; myPageControl.free; myComponent.free; mytab.free; inherited;end;试一下上面代码看行不行! 奇怪了,我把稀够函数架空,即如下所示:Destructor TView.Destroy;beginend;我在调用self.freee;时,第一次调用没有任何反应,正常,第二次调用就报错:'access violation at adress 0043899 in moudle project1.exe read of address 000070',看来好象是使用了不存在的对象,但是我的稀够函数是空的啊,应该说即使调用n次稀够函数,也不应该有反应报错啊,这是怎么会事情呢? 在Destroy函数里只加一个inherited;或不覆盖Destroy函数试试 在Destroy里是要inherited 的!Destructor TView.Destroy;begin mytab.free; inherited;end;你这个类是直接继承Object了,Object里有很多adStract方法的. 应该不是inherited的问题,TObject的destory方法是空的,没有代码。我觉得是你引用或者创建的组件有问题建议把你要创建和引用的组件屏蔽,然后一个个打开,看是否报错。 恩,找出问题来了,我在webbrowser上放了一个,用来关闭当前网页的TButtonmyClose:Tbutton;myClose:=TButton.Create(mytab);myClose.Parent:=myWebBrowser;myClose.onclick的代码是self.free;这样点击myclose后就包错,如果是用TspeedButtonmyClose:TspeedButton;myClose:=TSpeedButton.Create(mytab);myClose.Parent:=myWebBrowser;这样点击myclose后就成功释放了,但问题是我的TspeedButton在webBrowser上显示不出来的,我是将 ppDisp:=mywebBrowser.Application;屏蔽后才看到我的speedButton的,点击后可以成功释放的(这时候微软的浏览器会单出代替我的网业内容,我的新tabsheet上才可以看到speedButton).如果不屏蔽这句,就只显示了网页,在webBrowser上看不到speedButton有什么方法可以解决这种奇怪的现象呢?请赐教啊! DynamicSkinForm 5.90 这个控件怎么用呢? 怎样学好delphi 关于Adoquery执行的问题,请指教! 老是看到倒分贴,郁闷 关于DBGrid的问题. 欢迎讨论:简体、繁体同界面显示问题 散分散分!祝大家工作都顺利哦…… delphi 中自带的demo-chat在多人使用的情况下会出错(windows socket error (10014) on api send ) ,我该如何收进 求救,这里写的DLL读取Form内控件名称,为什么会乱码? 请问有关dbgrid的刷新问题!~ 要QQ号的进来,100个QQ号等着你,不过,一人只要一个好了 两个问题
type
TView=class
public
Constructor Creat(AOwner:Tcomponent;Aparent:TPageControl;Var ppDisp:IDispatch);
Destructor Destroy();Override;
private
//要创建的几个组件
myTab:TTabSheet;
myStatusBar:TStatusBar;
myWebBrowser:TWebBrowser;
//要引用的几个组件
myPageControl:TPageControl;
myComponent:Tcomponent
......
end;
在构造函数中有:
Constructor Tview.Creat(AOwner:Tcomponent;Aparent:TPageControl;Var ppDisp:IDispatch);
begin
//赋值
self.myComponent:=AOwner;
self.myPageControl:=Aparent;
//创建
myTab:= TTabSheet.Create(AOwner);
myTab.PageControl := AParent;
myStatusBar:=TStatusBar.Create(mytab);
myWebBrowser:=TWebBrowser.Create(mytab);
//显示网页
ppDisp:=mywebBrowser.Application;
mywebBrowser.ParentWindow:=mytab.Handle;
..............
end;
//析够函数有
Destructor TView.Destroy;
begin
mytab.free;
end;
现在我的代码都可以通过,运行也正常,但是在释放一个对象的时候
我调用self.free;以后就报错误'abstract error',是不是我引用对象的方法有错误呢?
请各位高手指教!
begin
myWebBrowser.free;
myStatusBar.free;
myPageControl.free;
myComponent.free;
mytab.free;
inherited;
end;
试一下上面代码看行不行!
Destructor TView.Destroy;
begin
end;
我在调用self.freee;时,第一次调用没有任何反应,正常,
第二次调用就报错:
'access violation at adress 0043899 in moudle project1.exe read of address 000070',
看来好象是使用了不存在的对象,但是我的稀够函数是空的啊,应该说
即使调用n次稀够函数,也不应该有反应报错啊,这是怎么会事情呢?
begin
mytab.free;
inherited;
end;你这个类是直接继承Object了,Object里有很多adStract方法的.
myClose:Tbutton;
myClose:=TButton.Create(mytab);
myClose.Parent:=myWebBrowser;myClose.onclick的代码是
self.free;这样点击myclose后就包错,如果是用TspeedButton
myClose:TspeedButton;
myClose:=TSpeedButton.Create(mytab);
myClose.Parent:=myWebBrowser;这样点击myclose后就成功释放了,但问题是我的TspeedButton在webBrowser上显示不出来的,
我是将 ppDisp:=mywebBrowser.Application;屏蔽后才看到我的speedButton的,点击后可以成功释放的(这时候微软的浏览器会单出代替我的网业内容,我的新tabsheet上才可以看到speedButton).
如果不屏蔽这句,就只显示了网页,在webBrowser上看不到speedButton
有什么方法可以解决这种奇怪的现象呢?请赐教啊!