偶尔提示错误access violation
偶尔出现的access violation错误,MDI主窗体有2个菜单按钮打开子窗口时偶尔出现,完全是随机性, 单步调试的时候不会出现错误(我试过几百次,都没错误) 某个错误的按钮代码: procedure TMainForm.N48Click(Sender: TObject); begin if not Assigned(Data_xz_Form) then Data_xz_Form:=TData_xz_Form.Create(Application); end;
既然用到 Assigned 作判断,那么判断的对像在释放时,用FreeAndNil(Data_xz_Form),或者在 Data_xz_Form.free;后面加行Data_xz_Form := nil; 子窗口 onclose事件里面 action := caFree; Data_xz_Form := nil;引用 既然用到 Assigned 作判断,那么判断的对像在释放时,用FreeAndNil(Data_xz_Form),或者在 Data_xz_Form.free;后面加行Data_xz_Form := nil; Data_xz_Form不单单只对象本身,而是指指向对象的地址,因此需要最后要把指针释放。 否则,释放了对象,指针还没有为空,再次指向的时候就会报告无效地址错误(AV错误)。 估计是 没有初始化某个对象之类的问题引用 既然用到 Assigned 作判断,那么判断的对像在释放时,用FreeAndNil(Data_xz_Form),或者在 Data_xz_Form.free;后面加行Data_xz_Form := nil; 非常有理,Assigned只能判断当前指针是否为nil,并不能判断Data_xz_Form是否有效,在Delphi中nil指向的地址是为0的,也就是如果Data_xz_Form指向的地址大于0,你释放之后,没有Data_xz_Form := nil,Assigned是判断不出来的。 具体
相关问答:
ACCESS数据库中有一个tablename表,设计如下 编号,书名,作者,出版时间,出版社,ISBN,目录,简介 其中除“编号”为自动编号外,其它都为“备注” 其中"编号"维一,在“ISBN”中有的为空值, ......
哪里出错了,输出这样的结果?? <%@ Page Language="VB" AutoEventWireup="false" aspcompat="true" CodeFile="Default.aspx.vb" Inherits="_Default" %&g ......
dwr.xml: <create creator="struts" javascript="PrisonerActionForm"> <param name="formBean" value="prisonerForm"/> < ......
vc中用odbc的方法访问access数据库,用到了cdatabase类和crecordset类。数据源在窗口初始化的时候被打开g_datasource.Open("data",FALSE,FALSE); 点击一个按钮启动一个定时器,在定时器内完成以下操作,定 ......