原因很简单例如你另一个位置要调用ModalForm的时候
可以这样
if ModalForm <> nil then
ModalForm := TModalForm.Create(nil)
ModalForm.Show;如果没有 Modalform := nil;以上语句中
ModalForm := TModalForm.Create(nil)不会运行
那么实际上ModalForm已经释放,但是ModalForm引用的对象地址还在(虽然是无效地址)
所以在ModalForm.Show的时候就会出错了!!!
可以这样
if ModalForm <> nil then
ModalForm := TModalForm.Create(nil)
ModalForm.Show;如果没有 Modalform := nil;以上语句中
ModalForm := TModalForm.Create(nil)不会运行
那么实际上ModalForm已经释放,但是ModalForm引用的对象地址还在(虽然是无效地址)
所以在ModalForm.Show的时候就会出错了!!!
解决方案 »
- Dephi调用JAVA的webservice的问题,大家请进来(请求置顶)的另外100分
- Crystal Report(水晶报表),分发时要打包哪些文件。
- 在simplegrah控件上画线。并让线可以平形移动
- 键盘输入冲突问题
- TWebBrowser中,如何访问页面中的array??
- IntraWeb的简单问题
- 请问在Windows2000/Xp下面编的程序怎么兼容windows98/ME???
- 很郁闷 散分 连同以前结不掉的帖子一共300 请斑竹手下留情 不要砍郁闷的分 -_-#
- 关于数据库问题的大讨论?我一直在等待着您的回答:
- 急!为什么RichEdit中的CFM_HIDDEN(隐藏)没有效果,象其他的CFM_STRIKEOUT(删除线)却有效果,我用的是RichEdit3.0版本。
- SkinEngine9.01 写的程序如何升级到 SkinEngine3.02 ????
- 在Quckreport中,为什么会出现下面的问题?
内容并没有被清空,何时被覆盖取决于操作系统的操作。就是说可能对这个指针的操作还是有效的,非常不确定
如果你的代码引用了这块内存,他可能出错,但也可能不出错!加一个nil可以手工将这个指针置为空,这样就没有办法再操作这块内存,
可以保证不会出问题。另外两个函数可以参考:
Assigned()
FreeAndNil()
因为:
如果程序用了if Assigned(Modalform)而关闭时没有Modalform:=nil
那么要出错,内存置为释放状态,内容并没有被清空。