Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Dll 尝试添加现有类模块时出现内存不足错误VB6_Dll_Vb6_Out Of Memory_Wininet - Fatal编程技术网

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

Dll 尝试添加现有类模块时出现内存不足错误VB6,dll,vb6,out-of-memory,wininet,Dll,Vb6,Out Of Memory,Wininet,我在用VB6做一个项目。我必须添加一个下载功能。它包含1个表单、1个类模块和1个模块(bas)文件。当我将现有模块添加到项目中时,它是成功的,但是当我尝试将类模块或frm文件添加到项目中时,它表示内存不足。我对这个问题绞尽脑汁已经有一段时间了,但找不到任何解决办法 我不能发布任何代码,因为这是一个公司项目。我只能说这是一个包含数千行代码的庞大项目。我试图添加的模块用于通过HTTP下载文件,它访问Wininet.dll中的方法 我不知道项目是否已经达到了代码行的最大限制,或者它是否是一个变量问题

我在用VB6做一个项目。我必须添加一个下载功能。它包含1个表单、1个类模块和1个模块(bas)文件。当我将现有模块添加到项目中时,它是成功的,但是当我尝试将类模块或frm文件添加到项目中时,它表示内存不足。我对这个问题绞尽脑汁已经有一段时间了,但找不到任何解决办法

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

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


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

我想我在过去也遇到过类似的情况,经过一些挖掘和尝试不同的东西,结果是我们在项目中拥有的变量/表单/控件的数量。项目中唯一变量、常量和控件名称的数量有限制

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

我们通过检查代码,将表单上标签的名称更改为控制数组,对字符串使用常量,并删除任何不再需要的旧代码来解决这个问题。尝试删除未使用的变量

如果它使生活更容易,你可以尝试移动一些代码到dll的。 希望这有帮助

请仔细观察,以下小节可能会有所帮助:

您知道,有一些高级对象可以在两行或三行中完成Wininet中需要很多行的工作

使用xmlhttp尝试这种方法。编辑url的等。如果它似乎工作注释出如果/结束如果转储信息,即使看起来工作。它是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
出错时继续下一步
Set File=WScript.CreateObject(“Microsoft.XMLHTTP”)
文件。打开“获取”http://www.microsoft.com/en-au/default.aspx”“错
“这是IE 8头
File.setRequestHeader“用户代理”、“Mozilla/4.0(兼容;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)”
文件。发送
如果错误号为0,则
line=“”
行=行和vbcrlf&“”
Line=Line&vbcrlf&“获取文件时出错”
行=行和vbcrlf&“================================================”
行=行和vbcrlf&“”
Line=Line&vbcrlf&“Error”&err.number&“(0x”&hex(err.number)&“”&err.description
Line=Line&vbcrlf&“Source”&err.Source
行=行和vbcrlf&“”
Line=Line&vbcrlf&“HTTP错误”&File.Status&&File.StatusText
Line=Line&vbcrlf&File.getAllResponseHeaders
回音行
清楚
wscript.quit
如果结束
错误转到0
设置BS=CreateObject(“ADODB.Stream”)
BS.type=1
英国公开赛
BS.Write File.ResponseBody
BS.SaveToFile“c:\users\test.txt”,2

您是否尝试过复制并粘贴到现有(空)模块文件中?那么您的意思是该项目(带有一个表单、一个类模块和一个BAS模块)以前可以正常工作?那么,当你说“现有模块”时,你指的是哪个文件?你说“我的项目”是指哪个项目?最后,您是认真的说,包含数千行代码的整个应用程序包含在三个文件中吗?这很不寻常。您可能会有所帮助,但可以将代码分解成更小的文件。@markbertenshaw您会感到惊讶。我的公司有一些可怕的代码。多个vb6程序按时间表运行,这些程序启动一个程序,该程序显示一个窗体,其中包含一个计时器,该计时器调用包含数千行代码的单个bas文件中的方法。。。有时在一个函数中。他们不得不将这些项目中的一些分支,以便为某些边缘案例添加功能,因为vb6不允许更多的代码行(删除不适用于边缘案例的代码行)这样的事情存在,它们让我哭我明白这是一个糟糕的情况,但我想让你说的是“什么操作阻止了代码的运行?”。上面的答案有很好的建议,但我担心您需要提供更多(冗长!)详细信息。由于您还没有选择答案,似乎您还不满意。我想我想让您做的是为这个错误提供一个逐步复制的案例。到目前为止,在什么时候出现内存不足错误有点含糊不清。在IDE中或在运行时执行文件操作?请编辑源代码尽可能详细地写最后一篇文章。添加声明直到它崩溃的实验方法是唯一有实际意义的方法。是的,我们也发现了这一点…可能和你解释的一样…不过非常感谢你的回复。。。