VB6应用程序中的内存不足错误

时间:2010-10-15 14:12:03

标签: vb6

在任何人说出来之前,我知道这不应该是它应该做的方式,但它就是它完成的方式,我试图支持它而不重写它。
我可以向你保证,这不是最糟糕的一点。

当应用程序将整个文件读入字符串变量时,会出现问题。 通常情况下,这可以正常工作,因为文件很小,但是一个用户创建了一个107MB的文件,但是它已经过了。

intFreeFile = FreeFile
Open strFilename For Binary Access Read As intFreeFile
ReadFile = String(LOF(intFreeFile), " ")
Get intFreeFile, , ReadFile
Close intFreeFile

现在,它不会落在

ReadFile = String(LOF(intFreeFile), " ")

但是在

Get intFreeFile, , ReadFile

那么这里发生了什么,当然 String 已完成内存分配,为什么会抱怨获取内存不足?

3 个答案:

答案 0 :(得分:0)

通常读取文件涉及一些缓冲,这需要空间。我猜这里,但我会看一下字节到字符转换所需的空间。 VB6字符串是16位,但(二进制)文件是8位。文件内容需要107MB,转换结果需要214 MB。字符串分配仅保留214 MB。

答案 1 :(得分:-1)

您不需要“GET”调用,只需删除它,您已经将文件放入字符串中,因此无需使用GET调用。

ReadFile = Input(LOF(intFreeFile), intFreeFile)

答案 2 :(得分:-2)

我得到了同样的错误。我们刚检查了任务管理器,显示了100%的资源使用情况。我们发现其中一个更新应用程序占用了太多ram内存,我们就把它杀掉了。 这解决了我的问题。还有一件事是我们进入了配置设置。                START-> RUN-> MSCONFIG  并转到启动选项卡并取消选中看起来像更新程序应用程序或您不使用的奇怪应用程序的应用程序。