【问题标题】:VB6 For Loop on error behaviorVB6 For 循环错误行为
【发布时间】:2009-12-24 04:04:17
【问题描述】:

在 VB6 中,我在 Form_Load 事件中有以下代码行:

DOSOMETHING()
MsgBox "Done"

DOSOMETHING() 是一个错误的函数,我希望它总是会崩溃。当我运行该应用程序时,它会执行它的操作并崩溃,而不显示 MsgBox。

但是当我使用循环编写它时:

Dim X as Integer

For X = 0 to 1000
    DOSOMETHING()
    MsgBox "Done"
Next X

应用程序永远不会崩溃。我认为这与延迟有关,所以我也尝试在循环内添加 SLEEP,但无济于事。

所以我的问题是,在 VB6 的 For 循环中是否有一个特殊的“On Error Resume Next”?

PS:

如果有人对我问这个问题的原因感到好奇,我试图通过多次调用该函数来重现间歇性错误。该功能用于检查管理员功能。更多关于函数here的细节。

谢谢!

【问题讨论】:

  • 你知道它在 DOSOMETHING 函数的哪个地方崩溃了吗?根据您的另一个问题,这似乎与问题更相关,而不是循环是否崩溃。

标签: vb6 loops


【解决方案1】:

我可能与从 Form_Load 调用它的事实无关。也许稍后在 Form_Load 或 Form_Activate 中的一些初始化会导致它不会崩溃。

【讨论】:

  • 我必须同意 Kanju 的观点,即切换事件会改变函数的行为方式。但是看看你之前关于 FreeSid API 调用的问题,你对 ByVal 的问题可能已经全部纠正了。
【解决方案2】:

尝试在调用 DoSomething 之后插入 DoEvents。这让给了 o/s,允许处理其队列中的事件,并可能使函数完成或失败!在返回其调用父级之前。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-08-15
    • 2018-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-04
    • 1970-01-01
    相关资源
    最近更新 更多