关于内存溢出
vb吧
全部回复
仅看楼主
level 6
zcy0131 楼主
自己弄了一个报价用的软件,在VB中测试使用没有问题,但是编译后运行,同样的操作步骤,同样的数据,在编译后运行时就会提示“内存溢出”,请问会是什么原因?
2017年02月28日 05点02分 1
level 6
我也是新手
2017年02月28日 06点02分 2
level 6
zcy0131 楼主
很是郁闷,原本以为是变量定义小了。可是在VB环境中运行还没问题。编译后运行就出错。
2017年02月28日 06点02分 3
内存溢出多是数组声明过大导致,要彻底解决这个问题,建议你使用数据库技术。
2017年02月28日 14点02分
请看 17 楼。
2017年03月01日 04点03分
level 15
首先我想说:无代码无真相
然后我上百度查了一下,从别人提的这种问题和回答来看,这是个很玄学的问题[滑稽]
顺便【内存溢出】和【溢出】是两种不同的错误
2017年02月28日 07点02分 5
请见楼下
2017年02月28日 07点02分
level 6
zcy0131 楼主
错误提示如图
,因为是一个基本完整的程序了,代码怎么提供呢?一段就可以吗?
2017年02月28日 07点02分 6
补充一下,上传代码提示帖子过长。。。。。。
2017年02月28日 08点02分
噫,居然不是错误编号7……在知道上找到一个这个问题:https://zhidao.baidu.com/question/360552485396898132.html ,你看看能不能解决
2017年02月28日 08点02分
好吧,原来这个错误编号只是说明这是一个sql错误的,具体错误还要看描述……
2017年02月28日 08点02分
@初音✨七奈 你的意思是说SQL语句存在问题吗?
2017年03月01日 00点03分
level 6
zcy0131 楼主
这个是相关界面
2017年02月28日 08点02分 7
level 8
循环中断的条件有误?
2017年02月28日 08点02分 8
在这段代码中都是条件判断,没有循环语句。除了写MS控件的数值时,但是如果是循环错误应该是一直都存在啊。不可能运行环境不同就不一样啊。
2017年02月28日 08点02分
level 11
如今的内存怎么用也不会溢出啊,是不是开辟的储存单元不当,或者其他什么占用了太多的内存?我第一感觉是递归不能返回无限深入造成的,但那应该提示是堆栈溢出,而不是内存溢出。真是无处可想。
2017年02月28日 08点02分 9
level 6
zcy0131 楼主
现在的问题是在编译前,使用VB的环境下可以正常运行,一旦编译后再独立运行时就内存溢出。
这是在VB的环境下运行,选择完“一控二”后MSflexGrid控件显示数据
下面是出错的。编译后独立运行,选中“一控二”后MSflexGrid控件没显示数据,出现错误提示
2017年02月28日 08点02分 10
EXE 文件在编程的文件夹中,还是另有文件夹?如果是另有文件夹,就要看数据库表是否全部拷贝过去了。
2017年02月28日 16点02分
不过你这个程序代码还是有问题的。例如没有数据库表时怎么处理的。
2017年02月28日 16点02分
或者,数据表中没有记录时,又是怎么处理的?
2017年02月28日 16点02分
@Luosen56 数据库是指定了网络位置的,不需要随程序拷贝
2017年03月01日 00点03分
level 8
用 on error分段测试,不用多长时间就能知道代码问题出在哪里
就是on error goto lb,出错了往上移,直到转入lb错误处理段,这时on error goto 行的下行就是问题所在行
2017年02月28日 14点02分 11
问题是人家在调试模式下根本不出错……而且这个错误编号应该是sql运行时错误
2017年02月28日 14点02分
知道,所以要用on error goto 来处理,先放事件或过程或函数的最上面,如果不出错再换个,如果不出错说明是这个事件过程函数内某行的代码有问题,然后把on error goto 移到中间,出错再上移1/4,不出错下移1/4,几分钟就能定位出错的行。
2017年02月28日 14点02分
“如果不出错再换个,”-->如果出错再换个(说明问题不是出在这里面)。我打完字基本不看[哈哈]
2017年02月28日 14点02分
level 15
猜是最有意思的。就凭一个提示猜代码。太厉害了
2017年02月28日 21点02分 12
哈哈,只是定位出错行,不是猜代码,有源代码看看不就得了啊。只是一种方法,可以去试试。
2017年02月28日 22点02分
我们都将修炼成神!
2017年03月01日 06点03分
2017年03月01日 21点03分
旧演义里面说的,心血来潮,掐指一算……
2017年03月02日 00点03分
level 11
加载数据库的过程插入若干msgbox测试哪里出错
2017年02月28日 23点02分 13
level 6
zcy0131 楼主
感谢大家的分析,没有代码就这么讨论确实有点困难[哈哈]。但是代码太多,无法粘贴上来。所以只好这样了,要是哪位有空闲时间可以帮助测试,我可以把整个程序发送过去。
接下来我先按照“PT98”大侠的提示做测试,有结果告诉大家。谢谢
2017年03月01日 00点03分 14
level 6
zcy0131 楼主
If Val(Text2(5).Text) Mod 2 <> 0 Then
MsgBox "配套数量不对,请重新选择"
Else
ptdqcs6 = "2"
Call openconn '打开连接数据库
Sql = "select *from jcsj where 规格型号 like '%" & PassEn(dq1k2) & "%' and 名称 like '%" & EnCodeString(dqgg, True) & "%'"
rs.Open Sql, cn, 1, 1 <--------------执行到这里是弹出内存溢出的警告
If rs.RecordCount > 0Then
Call dqfz
CallAdjustColWidth(Form3, Form3.MS4)
End If
Call closeconn
End If
2017年03月01日 00点03分 15
发现出问题的地方,但是是什么原因才会导致VB环境不错,生成EXE后执行就出错误呢?
2017年03月01日 00点03分
@zcy0131 可能传递了无效的参数?在这行的的前面用debug.print把这行中的所有变量、函数返回值都打印出来,看看有没有无效的值。另外变量是否都申明类型了,或者类型有问题,或者就根本没有申明。
2017年03月01日 01点03分
修改一下获取RS的访问方式,最好不要使用1,1独占方式,你原来已经打开了数据库,再使用独占方式......然后就会......
2017年03月01日 22点03分
level 6
zcy0131 楼主
按照PT98大侠的提示,采用PING的方式打出了SQL语句,发现在VB环境的和编译后的没有区别。like后面的字符串是加密后的,有可能是字符串长度在不同环境下分配的存储空间不同引起的吗?
2017年03月01日 02点03分 16
数据问题嘛,“名称”里有非法字符“?”....你测试把AND后的查询语句删除。
2017年03月01日 05点03分
1 2 尾页