代码之家  ›  专栏  ›  技术社区  ›  kjack

代码在IDE中工作时在exe中崩溃,错误为91“未设置对象变量”

  •  0
  • kjack  · 技术社区  · 17 年前

    这段代码在IDE中工作得很好,但是每次在最后一行生成一个exe并在同一台计算机上运行时都会崩溃。你知道为什么吗?

    PageFinished = False
    Cancelling = False
    OKToUnload = False
    
    WebBrowser.Navigate ("https://www.example.com/index.jsp")
    
    Do While PageFinished = False  'set to true in document complete event
        DoEvents
        If Cancelling = True Then
            OKToUnload = True
            GoTo Endline
        End If
    Loop
    PageFinished = False
    WebBrowser.Document.All("UserId").Value = txtNumber.Text 'error here
    
    2 回复  |  直到 17 年前
        1
  •  1
  •   RS Conley    17 年前

    您需要添加msgboxes来显示测试结果,其中哪些变量设置为Nothing,或者写入文本文件并运行exe,然后查看什么设置为Nothing。

    这可能和在最后一行之前等待一样简单。等待子例程如下所示。

    Public Sub Wait(T As Double)
        Dim StartTime As Double
        StartTime = Timer
        Do While Abs(Timer - StartTime) < T
        Loop
    End Sub
    

    我试着用1/10秒的时间,然后慢慢地往上爬。即wait.1如果必须等待一秒钟或更长时间,请确保定期调用doEvents以保持应用程序响应。

    这是因为IDE总是使用PCode,所以触摸速度比执行exe慢。您可能还想尝试编译到pcode,看看这是否会有所不同。

        2
  •  1
  •   Jim H.    17 年前

    在没有看到更多示例代码的情况下,我冒昧地猜测这是一个时间问题,被vb i ide“隐藏”。在设置.value属性之前测试webbrowser.document.all(“userid”)。在非IDE版本的代码达到这一点时,它可能不可用(什么也没有)。

    “object variable or with block variable not set”(对象变量或未设置块变量)是vb告诉您空引用的方式,在webrowser.document.all(“userid”)行中,您有3个可能为空的独立对象。

    推荐文章