BDE中的东东:为什么往数据库中写东西关闭程序的时候总有异常错误?(请关注!!)(200分)

  • 主题发起人 主题发起人 逸魔
  • 开始时间 开始时间
各位大侠的方法我都试过了,但是错误还是:project1.exe raised exception class Eaccessviolation with message"Access
violation at address 004044DE in module project1.exe....
 
form4.table1.Close;
form4.Table1:=nil;
OnDestroy里
form4.Free;
如还有错那就是其它单元有问题
 
楼上的大侠:你能说得详细点吗?我把form4.table1.active:=false 写在主窗体的CLOSE 事件中的,
你说的form4.table1.Close; form4.Table1:=nil;写在那里?是主窗体还是form4。form4.free呢?
因为我关FORM4之后(没关主窗体),很有可能随时都会在打开,如果FREE了以后就再开就会出
问题。我在主窗体FREE,也有问题。
 
form4.table1.Close; form4.Table1:=nil
写在form4的CLOSE 事件中的,
form4.Free;
只要form4是在项目单元中CREAT 可以不写!
 
不要把form4.table1.active:=false 写在主窗体的CLOSE 事件中的,最好不写
这就是祸首!!!!
 
对了我想起了

写在form4的CLOSE 事件中的这样就行,
form4.table1.Close;

 
卡色:我试了,但是还是有点问题,就是我在form4的CLOSE中如果写form4.table1.close的话
我再在主窗体中关闭了form4之后,再打开form4就看不到数据库里的东西了,再关它就出错
但是我在form4的show或creat事件中将form4.table1.open也没有用。怎么办?不是说用
form4.table1.active:=true和form4.table1.open 是一样的吗?
 
那你可以试试在form4的CLOSE不要写form4.table1.close,也不要在show或creat事件中
写什么,还可以试试把form4.table1.active:=true写在form4的OnActive事件中,
在form4的CLOSE中写form4.table1.active:=False;
 
在FORM4的close的事件中加上:
action:=cafree;
还是用ado吧,bde不好的!
 
还是行不通呀,怎么办?在onactivate中写:form4.table1.active:=true再在onclose中写
form4.table1.active:=false,结果是要出错的!
既然说不能在主窗体的onclose中关闭这些table,那在子窗体中怎么释放呢?请指教(十万火急!!)
有没有可能是我的BDE配置不当?另外如果出错的告知的地址004044DE,那是那里?怎么看?
我看不懂CPU的东东,要看代码里的
请指教!
 
我现在觉得可能不是释放的问题,因为我在主窗体的onclose事件中把所有有table的窗体的
form.table1.active:=false都设置的这样,但是我操作别的子窗体没有异常(修改密码数据库的密码)
但是只要是操作传输数据的哪个窗体(即接收数据,写入库里面)就会有异常。各位十万火急!
 

如果table1不是动态创建就不要管释放问题,只管table1.active是否为TRUE;
有需要就TRUE,没需要就FALSE;
//地址004044DE
知道也没多大用处;
 
我已经知道是那里出问题了,是我传输的数据太多了(数据包太长),数据传少了就不会那样了,但是我还是想传那么多数据,怎么办,可不可以用什么把哪个异常屏蔽掉。
 
解决了没呀?
出错,什么错,POST?,还是什么传输?
 
用数据流stream
 
我用DELPHI实现的串口通信程序遇到一个问题。我用的通信控件是:spcomm,在我将下位机的数据传上来的时候,我要把它们存在数据库里面,我用的是BDE,我接收一点问题都没有,问题出在我在关闭主窗体的时候(我的接收数据的窗体是子窗体form4),错误显示为:
如果我的数据包有点大(即我如果一次传15条报警信息)就会有这样的错误,如果一次传一条 就不会有这样的错误。
请指教!!!不胜感激!
 
我用DELPHI实现的串口通信程序遇到一个问题。我用的通信控件是:spcomm,在我将下位机的数据传上来的时候,我要把它们存在数据库里面,我用的是BDE,我接收一点问题都没有,问题出在我在关闭主窗体的时候(我的接收数据的窗体是子窗体form4),错误显示为:project1.exe raised exception class Eaccessviolation with message"Access
violation at address 004044DE in module project1.exe....
如果我的数据包有点大(即我如果一次传15条报警信息)就会有这样的错误,如果一次传一条 就不会有这样的错误。
请指教!!!不胜感激!
 
贴点代码看看;
 
后来我用TRACE INTO跟踪,发觉是我的SPCOM不能inherit destroy时出错了。请问是什么原因
是SPCOMM的传输数据有限制吗?
 
不会吧,那你看看destroy中的代码有什么问题;
 
后退
顶部