vb里一切正常,编译成EXE后运行后关闭退出时报错,这是为什么?内有出错信息

时间:2022-08-02 23:43:50
vb里一切正常,编译成EXE后运行后关闭退出时报错,这是为什么?
我也试过ctrl+F5,也没问题的,就是编译成EXE后,运行,程序里面运行都没什么问题,就是退出程序的时候报错:
“0x762ec764”指令引用的“0xc0853861”内存。该内存不能为“read”
这是什么原因呢?
我是调用End退出整个程序的,程序里使用了一些recordset,但都只是用到的时候才开始定义并使用,一般出了form应该就会自动释放的,是这样吗?
会不会是这个原因?

18 个解决方案

#1


这个可能是vb的问题,我也碰到过多次,好象不是工程的问题,你把vb重装一下或者打个sp6的补丁看看

#2


我关闭电脑的时候也总会弹出和你差不多的信息来,,,我也很想知道这方面的知识,,

关注中,,

#3


打个sp6就可以了吗?哪里有下载?一定要到ms上去down吗

#4


用end语句关闭程序并不是一个很好的方法,end语句虽然可以结束程序,但并不能把窗体完全从内存中移走,造成的结果是窗体还占用着部分资源;完全释放所占资源的方法还是使用unload语句,然后使用 set form = nothing 语句。如果程序中窗体较多,可以使用下面的方法一次将所有窗体移走: 
sub unloadallforms( ) 
dim form as form 
for each form in forms 
unload form 
set form = nothing 
next form 
end sub 
上面这个函数采用窗体对象的方法,不需要一个一个地使用unload语句,在程序结束按钮中调用它即可。


至于0x762ec764”指令引用的“0xc0853861”内存。该内存不能为“read”,我也经常遇到,不知道那儿出了问题。

#5


打了SP6,没有用啊,还是老错误,真是见鬼了

#6


没遇见过

#7


你把VB卸掉,然后重装试试看

#8


你用了什么怪东东?

#9


没用什么东西啊,就是vb自带的东西,难道是对数据库操作过多?不会吧

#10


为什么在vb环境下调试运行都没问题呢?一编译成EXE就有错,这种东西可怎么拿出去给别人看啊!

#11


函数调用数据类型是否有错?或者字符串的使用是否有错?以致于对象无法拆除。

#12


函数调用数据类型没错的,一共也没几个函数,都是值传递过来的。至于字符串的使用也没的吧,每次我都是严格定义类型,然后再使用的呀

#13


这个问题在使用了SUBCLASS的VB程序中是很普遍的问题.
一个绝招:
先UNLOAD其它窗口
再UNLOAD frmmain(主窗口)
一般问题就解决了.
dim form as form 
for each form in forms 
if form.name<>"frmmain" then unload form 
set form = nothing 
next form 
unload frmmain

#14


是不是控件的问题,你有没有用第三方控件。。。。。
我也遇见过,同样的问题,还好不是要交给客户,要不就死定了。。。

#15


有对象未被释放!

试着释放所有的对象
或者尽量关闭外接程序里面一些不必要的插件

#16


都是这样的话
换个内存看看

#17


很多时候我打完游戏退出来就要报这个错,在win2000里,可能是系统的原因。

#18


我就是要交给客户啊,急死了

找到问题了,我使用了一个叫VerticalMenu的OCX,就是实现QQ面板那种效果的插件,程序里不调用含有这个插件的form就没问题。
但是我现在是一定要调用这个的呀,一般mdiform1.load里我就已经VMenu.show了,在整个程序退出的时候我才unload VMenu的,但是好象没用啊,怎么办?

#1


这个可能是vb的问题,我也碰到过多次,好象不是工程的问题,你把vb重装一下或者打个sp6的补丁看看

#2


我关闭电脑的时候也总会弹出和你差不多的信息来,,,我也很想知道这方面的知识,,

关注中,,

#3


打个sp6就可以了吗?哪里有下载?一定要到ms上去down吗

#4


用end语句关闭程序并不是一个很好的方法,end语句虽然可以结束程序,但并不能把窗体完全从内存中移走,造成的结果是窗体还占用着部分资源;完全释放所占资源的方法还是使用unload语句,然后使用 set form = nothing 语句。如果程序中窗体较多,可以使用下面的方法一次将所有窗体移走: 
sub unloadallforms( ) 
dim form as form 
for each form in forms 
unload form 
set form = nothing 
next form 
end sub 
上面这个函数采用窗体对象的方法,不需要一个一个地使用unload语句,在程序结束按钮中调用它即可。


至于0x762ec764”指令引用的“0xc0853861”内存。该内存不能为“read”,我也经常遇到,不知道那儿出了问题。

#5


打了SP6,没有用啊,还是老错误,真是见鬼了

#6


没遇见过

#7


你把VB卸掉,然后重装试试看

#8


你用了什么怪东东?

#9


没用什么东西啊,就是vb自带的东西,难道是对数据库操作过多?不会吧

#10


为什么在vb环境下调试运行都没问题呢?一编译成EXE就有错,这种东西可怎么拿出去给别人看啊!

#11


函数调用数据类型是否有错?或者字符串的使用是否有错?以致于对象无法拆除。

#12


函数调用数据类型没错的,一共也没几个函数,都是值传递过来的。至于字符串的使用也没的吧,每次我都是严格定义类型,然后再使用的呀

#13


这个问题在使用了SUBCLASS的VB程序中是很普遍的问题.
一个绝招:
先UNLOAD其它窗口
再UNLOAD frmmain(主窗口)
一般问题就解决了.
dim form as form 
for each form in forms 
if form.name<>"frmmain" then unload form 
set form = nothing 
next form 
unload frmmain

#14


是不是控件的问题,你有没有用第三方控件。。。。。
我也遇见过,同样的问题,还好不是要交给客户,要不就死定了。。。

#15


有对象未被释放!

试着释放所有的对象
或者尽量关闭外接程序里面一些不必要的插件

#16


都是这样的话
换个内存看看

#17


很多时候我打完游戏退出来就要报这个错,在win2000里,可能是系统的原因。

#18


我就是要交给客户啊,急死了

找到问题了,我使用了一个叫VerticalMenu的OCX,就是实现QQ面板那种效果的插件,程序里不调用含有这个插件的form就没问题。
但是我现在是一定要调用这个的呀,一般mdiform1.load里我就已经VMenu.show了,在整个程序退出的时候我才unload VMenu的,但是好象没用啊,怎么办?