VB6 Timer(),Space()Form_Initialize()导致立即崩溃

Dre*_*pin 6 vb6 windows-xp 32-bit windows-7

创建一个新的VB6项目.将以下代码粘贴为项目代码.命中运行.看它是否崩溃...在此代码中删除或简化您喜欢的任何内容,然后它将正常工作.任何人都可以详细说明为什么会崩溃?

到目前为止,这已经在8台PC上进行了测试,所有这些都运行Windows XP,Windows Vista,Windows 7,Office 2010和Office 2007的各种组合.在Visual Basic IDE中测试它的是安装了Visual Basic 6 SP 6.

Private Sub Sleep(ByVal nSeconds As Long)
    Dim nStart As Long: nStart = Timer
    Do
        DoEvents
    Loop Until (Timer - nStart) >= nSeconds
End Sub

Private Sub Crash()
    Dim sTempPath As String: sTempPath = Space(255)
End Sub

Private Sub Form_Initialize()
    Sleep 1
    Crash
End Sub
Run Code Online (Sandbox Code Playgroud)


附录#1:

我把它作为Excel中的一个宏,取而代之Form_Initialize()Workbook_Open(),当然,当你打开文档时.它崩溃了!

附录#2:

我在点击"运行"之前向每一行添加了断点,并在它到达第一个断点之前崩溃了.但同样,如果我简化或删除任何内容,它工作正常,不会崩溃.

附录#3:

试过MicSim关于取出结肠的建议,并没有崩溃.添加它,再次运行它并没有崩溃.关闭Visual Basic,并输入原始代码并将其崩溃.

附录#4:

Visual Basic 6 IDE中的问题详细信息:

问题签名:
问题事件名称:APPCRASH
应用程序名称:VB6.EXE
应用程序版本:6.0.81.76
应用程序时间戳:3592011f
故障模块名称:VBA6.dll
故障模块版本:6.0.0.8169
故障模块时间戳:358b0c74
异常代码:c0000005
异常偏移: 00026329
OS版本:6.1.7601.2.1.0.256.4
区域设置ID:1033
附加信息1:7e3b
附加信息2:7e3beb1e9ccf6d519c5b994ca59a280f
附加信息3:7b83
附加信息4:7b833c57ebcf54809fd3aaccd8ea4f46

在线阅读我们的隐私声明:
http ://go.microsoft.com/fwlink /?linkid = 104288&clcid = 0x0409

如果没有在线隐私声明,请离线阅读我们的隐私声明:
C:\ Windows\system32\en-US\erofflps.txt

附录#5:

Microsoft Excel 2010中的问题详细信息:

问题签名:
问题事件名称:APPCRASH
应用程序名称:EXCEL.EXE
应用程序版本:14.0.4756.1000
应用程序时间戳:4b9c08e8
故障模块名称:VBE7.DLL
故障模块版本:7.0.15.90
故障模块时间戳:4b7b1248
异常代码:c0000005
异常偏移: 00045b6a
操作系统版本:6.1.7601.2.1.0.256.4
区域设置ID:1033

有关此问题的其他信息:
LCID:1033
skulcid:1033

在线阅读我们的隐私声明:
http ://go.microsoft.com/fwlink/?linkid = 104288&clcid = 0x0409

如果没有在线隐私声明,请离线阅读我们的隐私声明:
C:\ Windows\system32\en-US\erofflps.txt

点击Run或Build后的屏幕截图

Gab*_*iel 5

在查看了您的问题和所有附录后,我意识到您的计算机正在运行VB6的发行版,而不是 SP6.

您的崩溃详细信息表明以下版本:

  • VB6.exe:6.0.81.76
  • VBA6.dll:6.0.0.8179

Visual Basic 6.0 SP6文件的确切版本号如下:

  • VB6.exe:6.0.97.82
  • VBA6.dll:6.0.0.9782

异常代码c0000005对应于模块vba6.dll中的访问冲突.Microsoft KB中记录了类似的问题

我没有找到准确的源列出每个VB6服务包的内部版本号,但看起来这是RTM版本.即使您自己安装了SP6,但在安装Service Pack之后,恶意安装程序可能会覆盖旧版本的共享系统文件.这可以解释为什么许多用户评论说代码在看似相似的设置下工作正常.