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