在vb6中填充组合框时出现运行时错误0

在vb6中填充组合框时出现运行时错误0,vb6,Vb6,特定于特定机器的奇怪错误 我有一个应用程序,其中组合框的文本值设置为文档的路径(即 忘记所有的GetSetting过程等,只是它返回一行文本,工作正常 这在除一台之外的所有计算机上都能正常工作。此特定Vista计算机会抛出错误运行时错误0,并将用户抛出程序,而不管过程中的错误处理如何。其他Vista计算机工作正常 对于这个令人困惑的问题,我们将不胜感激 谢谢你的帮助 机器正在运行Vista Business 64位 用户可以通过启用的用户帐户控制获得管理员权限 按照您的提示,我尝试以管理员身份

特定于特定机器的奇怪错误

我有一个应用程序,其中组合框的文本值设置为文档的路径(即

忘记所有的GetSetting过程等,只是它返回一行文本,工作正常

这在除一台之外的所有计算机上都能正常工作。此特定Vista计算机会抛出错误运行时错误0,并将用户抛出程序,而不管过程中的错误处理如何。其他Vista计算机工作正常

对于这个令人困惑的问题,我们将不胜感激


谢谢你的帮助

机器正在运行Vista Business 64位

用户可以通过启用的用户帐户控制获得管理员权限


按照您的提示,我尝试以管理员身份运行该应用程序,并得到各种奇怪的响应(缺少文件、未注册依赖项等)。我已卸载该应用程序,并将尝试重新安装。我认为文件夹的卷影副本也可能会混淆问题。

vista机器之间的区别是什么

  • 版本
  • 背景
  • 用户权限

Al会对应用程序的工作方式产生影响。

vista机器之间的区别是什么

  • 版本
  • 背景
  • 用户权限

Al可能会对应用程序的工作方式产生影响。

您可能在错误的位置查找错误。当您更改
组合框的
文本
属性时,如果新文本与以前的文本不同,将触发
组合框
更改
事件。
LostFocus
和/或
Validate
事件也可能触发,这取决于您的代码正在做什么以及表单的设置方式

如果
Change
事件处理程序(或
LostFocus
Validate
事件处理程序中发生错误,如果您正在对它们执行任何操作),更改组合框文本的代码中的错误处理代码将永远不会被调用(这与VB6中的错误处理和事件的工作方式有关)

一般来说,您应该在VB6代码中的每个例程(子例程、函数或属性)中始终放置一个错误处理程序,因为您永远无法确定是否会捕获每个错误。

下面是一个简单的示例,它演示了错误处理可能并不总是像您在VB6中所认为的那样有效

创建一个新的标准EXE项目,并将CommandButton(Command1)和ComboBox(Combo1)添加到默认表单中,并将以下代码添加到表单中:


一旦您有了更细粒度的错误处理,您就可以开始调查为什么只在一台机器上看到问题,因为您应该有关于正在发生的错误的更可靠的信息,并且能够更好地找出根本原因。

您可能在错误的位置查找问题错误。更改
组合框的
Text
属性时,如果新文本与以前的文本不同,将触发
组合框的
change
事件。
LostFocus
和/或
Validate
事件,具体取决于您的代码执行的操作和表单的设置方式。

如果
Change
事件处理程序(或
LostFocus
Validate
事件处理程序中发生错误,如果您正在对它们执行任何操作),更改组合框文本的代码中的错误处理代码将永远不会被调用(这与VB6中的错误处理和事件的工作方式有关)

一般来说,您应该在VB6代码中的每个例程(子例程、函数或属性)中始终放置一个错误处理程序,因为您永远无法确定是否会捕获每个错误。

下面是一个简单的示例,它演示了错误处理可能并不总是像您在VB6中所认为的那样有效

创建一个新的标准EXE项目,并将CommandButton(Command1)和ComboBox(Combo1)添加到默认表单中,并将以下代码添加到表单中:


一旦您有了更细粒度的错误处理,您就可以开始调查为什么您只在一台机器上看到问题,因为您应该有关于正在发生的错误的更可靠的信息,并且能够更好地找出根本原因。

迈克·斯皮尔斯的建议是正确的您需要在所有事件中放置错误处理程序,因为将字符串分配给组合框的文本会引发许多事件

我的贡献是尝试以下内容

Dim TempS as String
TempS = clsTonyToolkit.GetSetting("ExportAIDFile",gtypmetadata.gcnnCentral) & ""
cmbAIDFile.Text = TempS

Unicode可能有点奇怪。错误0“无效的过程调用或参数”表明了这一点如果您有cmbAIDfile的事件过程,那么您需要再次捕获它们,以便查看错误是否在那里发生。

迈克·斯皮尔斯的建议是正确的,您需要在所有事件中放置错误处理程序,因为将字符串分配给组合框的文本会引发许多事件

我的贡献是尝试以下内容

Dim TempS as String
TempS = clsTonyToolkit.GetSetting("ExportAIDFile",gtypmetadata.gcnnCentral) & ""
cmbAIDFile.Text = TempS

Unicode可能有一些奇怪的地方。这由错误0“无效的过程调用或参数”指示。同样,如果您有cmbAIDfile的事件过程,那么您需要捕获它们,以便查看是否有错误发生。

使用这些代码

Private Sub cmbAIDFile_Change()

1000   On Error Goto ErrorHandler

1010   DoSomething
1020   DoSomethingElse

ErrorHandler:

1030   Dim sErrMsg As String
       sErrMsg = "A fatal error occurred." & vbCrLf & vbCrLf  & _
                 "Method: cmbAIDFile_Change" & vbCrLf & _
                 "Line: " & Erl & vbCrLf & _ 
                 "Err.Number: " & Err.Number & vbCrLf & _
                 "Err.Description: " & Err.Description

1040   MsgBox sErrMsg, vbCritical+vbOKOnly, "Fatal error"

End Sub 
Private Sub Command1_Click()
    On Error Resume Next
        'Your combo-box code here
    On Error GoTo 0
End Sub

使用这些代码

Private Sub cmbAIDFile_Change()

1000   On Error Goto ErrorHandler

1010   DoSomething
1020   DoSomethingElse

ErrorHandler:

1030   Dim sErrMsg As String
       sErrMsg = "A fatal error occurred." & vbCrLf & vbCrLf  & _
                 "Method: cmbAIDFile_Change" & vbCrLf & _
                 "Line: " & Erl & vbCrLf & _ 
                 "Err.Number: " & Err.Number & vbCrLf & _
                 "Err.Description: " & Err.Description

1040   MsgBox sErrMsg, vbCritical+vbOKOnly, "Fatal error"

End Sub 
Private Sub Command1_Click()
    On Error Resume Next
        'Your combo-box code here
    On Error GoTo 0
End Sub

我发现它也使用文本框,但只有这台机器。你确定问题不在GetSettings中吗?你可以尝试将函数的结果添加到导致问题的findout临时变量中。是的,尝试过。GetSettings很好。我发现它使用textb