尝试添加现有的Class模块时出现内存不足错误VB6

时间:2014-04-30 11:12:46

标签: dll vb6 out-of-memory wininet

我正在研究VB6中的一个项目。我必须添加下载功能。它包含1个表单,1个类模块和1个模块(bas)文件。当我将现有模块添加到我的项目时,它是成功的但是当我尝试将类模块或frm文件添加到项目时,它会显示OUT OF MEMORY。我一直在讨论这个问题很长一段时间但是找不到任何解决办法。

我无法发布任何代码,因为它是一个公司项目。我只能说它是一个包含数千行代码的庞大项目。我试图添加的模块用于通过HTTP下载文件,它访问Wininet.dll中的方法。

我不知道项目是否达到了代码行的最大限制,或者它是否是变量问题。

我听说制作DLL可以解决这个问题,但我们不需要这样做。有人可以帮忙吗?

2 个答案:

答案 0 :(得分:5)

我认为我过去曾遇到过类似的事情,经过一些挖掘和尝试不同的事情后,我们发现这是项目中变量/表格/控件的数量。项目中可以包含的唯一变量,常量和控件名称的数量有限制。

我们证明它的方式是添加一个没有完全打破它的模块,然后添加一个空模块。在空模块中开始添加变量直到它中断,它不应该花费很长时间。

我们通过遍历代码并将表单上的标签名称更改为控件数组,使用字符串常量以及删除任何旧的不再需要的代码来修复它。尝试删除未使用的变量。

如果它让生活更轻松,你可以尝试将一些代码移到dll上。 希望这会有所帮助。

将目光投向此,子部分可能有所帮助: VB6 Project Limitations

答案 1 :(得分:-2)

你知道有两个或三个行可用的高级对象在Wininet中需要很多。

使用xmlhttp尝试这种方式。编辑网址等。如果它似乎工作注释if / end if转储信息,即使看起来工作。它的vbscript但vbscript在vb6中工作。

 On Error Resume Next
 Set File = WScript.CreateObject("Microsoft.XMLHTTP")
 File.Open "GET", "http://www.microsoft.com/en-au/default.aspx", False
 'This is IE 8 headers
 File.setRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 1.1.4322; .NET CLR 3.5.30729; .NET CLR 3.0.30618; .NET4.0C; .NET4.0E; BCD2000; BCD2000)"
 File.Send
 If err.number <> 0 then 
    line =""
    Line  = Line &  vbcrlf & "" 
    Line  = Line &  vbcrlf & "Error getting file" 
    Line  = Line &  vbcrlf & "==================" 
    Line  = Line &  vbcrlf & "" 
    Line  = Line &  vbcrlf & "Error " & err.number & "(0x" & hex(err.number) & ") " & err.description 
    Line  = Line &  vbcrlf & "Source " & err.source 
    Line  = Line &  vbcrlf & "" 
    Line  = Line &  vbcrlf & "HTTP Error " & File.Status & " " & File.StatusText
    Line  = Line &  vbcrlf &  File.getAllResponseHeaders
    wscript.echo Line
    Err.clear
    wscript.quit
 End If

On Error Goto 0

 Set BS = CreateObject("ADODB.Stream")
 BS.type = 1
 BS.open
 BS.Write File.ResponseBody
 BS.SaveToFile "c:\users\test.txt", 2