我已经多次提出,不知道为何无人回答正确,在关闭form时(close)为何出现堆栈溢出(stack overflow)(10分)

  • 主题发起人 主题发起人 libaoliang
  • 开始时间 开始时间
L

libaoliang

Unregistered / Unconfirmed
GUEST, unregistred user!
我已经多次提出,不知道为何无人回答正确,在关闭form时(close)为何出现
堆栈溢出(stack overflow),此时系统会接着显示运行错误,
并退出系统,
我很奇怪,但有时又不出现,我想知道究竟是什么原因,在什么地方有问题,
分数不多,请多多帮助!
 
源码!
没有源码不能说明问题。
 
你光说退出出错,退出以前你对该窗体做过什么操作,在什么情况出错,又在什么情况下
不出错,这些现象你什么都不说,谁给你答呀,也没法回答呀,你还是回去自己好好看看吧
 
在你的Close之前肯定还有别的代码。
 
我在form中放置了dataset,query,dbgrid,datetimepicker,命令按钮等,
由于执行查询并显示数据,
其中的query1是这样的:
query1.close;
query1.sql.clear;
query1.sql.add('....from ... where rq bitween :rq1 and :rq2');
query1.parabyname('rq1').asdate:=datetimepicker1.date;
query1.parabyname('rq2').asdate:=datetimepicker2.date;
query1.open;
这不是很典型和很古老的吗,并没有什么特别的东西,同样类似的form中就不出错,
当然并不是一定每次都出错,我想知道的是就算每次都出错,这究竟是什么原因会造成
这种结果,如果系统能象VF一样指出错误的地方和错误类型,就好解决了,
可惜delphi 这两者都不提出,只是抛出错误并退出,是最可气的了

 
在退出按钮中的代码是(bitbtn1.onclick event)
query1.close;
close;
 
是不是用了heap里的内存没有释放?
 
我想你是不是在程序运行过程中建立了动态变量,或是控件或子窗体之类的,
但在退出时没有释放内存,另外你有没有改变过工程文件内容
 
可能是有些内存是没有释放,
请问如何释放,
var l:string:
.
.
使用完毕后还要释放自定义的字符串变量吗?
直接free.l
是否可以?
对于有些内存和变量的定义和释放问题,我接触不多,
关键是资料和例子中都没有谈论此问题的,
希望你能多多指点,以后定给加分!
 
代码有毛病。我肯定,但只有几句,不能具体分析。
 
OnClose、OnDestroy之类的关闭窗口会触发的事件里面写了什么东西吗
 
to libaoliang:
建议兄弟去看一下《提问的智慧》!
你说的话不知所终, 我想就是Adres Hansbleg也无法解决你的问题吧, 将你的问题
所出现的Context描述清楚, 这样别人才可能帮你解决!
(注:出现堆栈溢出错误的直接原因通常是不正确的递归造成的, 至于内存释放问题
是不会报堆栈溢出错误的, 只会是Access Violation错误; 原生类型的变量不需要释放,
比如说String型, Integer型等等, 它们被编译器释放)
 
提了半天的问题都没说到点子上 ^_^
 
实际上问题出在form的
 
可不可以把程序发给我,我帮你调调,因为这样讨论的确很麻烦,oasis3721@163.com
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部