Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb6 检查COM对象集合属性是否存在_Vb6_Outlook_Nullreferenceexception - Fatal编程技术网

Vb6 检查COM对象集合属性是否存在

Vb6 检查COM对象集合属性是否存在,vb6,outlook,nullreferenceexception,Vb6,Outlook,Nullreferenceexception,我已经思考了一段时间了。我通过编程(在VB6中)筛选Outlook PST,为其中的项目编制索引。我碰巧遇到了一个有点腐败的人,这就是我遇到困难的地方。我的程序连接PST并开始向下钻取文件夹(olFolder)。这些Outlook创建的对象应该有一个通常包含子文件夹(适当命名的文件夹)的集合 在代码执行期间,我递归调用processfolder函数来处理当前文件夹中的所有文件夹,但我有一个文件夹没有集合。这会导致异常,因为我正在检查集合中的文件夹计数,而没有要检查的内容。我知道如何检查对象的存在

我已经思考了一段时间了。我通过编程(在VB6中)筛选Outlook PST,为其中的项目编制索引。我碰巧遇到了一个有点腐败的人,这就是我遇到困难的地方。我的程序连接PST并开始向下钻取文件夹(olFolder)。这些Outlook创建的对象应该有一个通常包含子文件夹(适当命名的文件夹)的集合

在代码执行期间,我递归调用processfolder函数来处理当前文件夹中的所有文件夹,但我有一个文件夹没有集合。这会导致异常,因为我正在检查集合中的文件夹计数,而没有要检查的内容。我知道如何检查对象的存在性,但我很难在和对象中检查集合的存在性

更新 表达方式:

If Not fl.Folders Is Nothing Then
最后也抛出了异常。我得到的例外情况如下:

Could not complete the operation because the service provider does not support it.
仅当尝试访问此损坏的文件夹时,此文件夹的文件夹集合属性为FUBARed

最终的 好,;在本例中,我将引入一些在线错误处理

If Not Err.Number = -2147221246 Then
'Do the thing with the other thing
End If
Err.Clear

如果您正在谈论检查是否
obj.Coll.Count=0
,那么看看
obj.Coll是否什么都不是
如果您正在谈论检查是否
obj.Coll.Count=0
,那么看看
obj.Coll是否什么都不是
当我在vb6上使用web服务时,我已经检查了一些情况,如果属性存在。我用了那种方法

这是缓慢的,但我希望这能帮助你

Public Function HasProperty(ByRef obj As Object, ByVal nameProperty As String) As Boolean

On Local Error GoTo hasProperty_Error

   Dim Result

   Result = CallByName(obj, nameProperty, VbGet)

  hasProperty = True
hasProperty_Done:
  Exit Function

hasProperty_Error:
    If Err.Number = 438 Then
      hasProperty = False
    End If

Resume hasProperty_Done

End Function

当我在vb6上使用web服务时,我会检查一些案例是否存在属性。我用了那种方法

这是缓慢的,但我希望这能帮助你

Public Function HasProperty(ByRef obj As Object, ByVal nameProperty As String) As Boolean

On Local Error GoTo hasProperty_Error

   Dim Result

   Result = CallByName(obj, nameProperty, VbGet)

  hasProperty = True
hasProperty_Done:
  Exit Function

hasProperty_Error:
    If Err.Number = 438 Then
      hasProperty = False
    End If

Resume hasProperty_Done

End Function

嗯,我可以发誓我确实试过了,但它抛出了一个异常。。。嗯,非常感谢你的帮助。这就是我在周六清晨工作所得到的……起初,这看起来很有效,但很明显,我确实尝试过,但没有成功。我将在上面的帖子中添加更多细节。虽然这不是我的问题的答案,但我正在处理一个严重损坏的PST文件,Outlook对此感到非常震惊,如果这是一个更“正常”的(开发中有这样的事情吗?)case.hmm,我确实会这样做。我可以发誓我确实试过了,但它抛出了一个异常。。。嗯,非常感谢你的帮助。这就是我在周六清晨工作所得到的……起初,这看起来很有效,但很明显,我确实尝试过,但没有成功。我将在上面的帖子中添加更多细节。虽然这不是我的问题的答案,但我正在处理一个严重损坏的PST文件,Outlook对此感到非常震惊,如果这是一个更“正常”的情况(开发中有这样的事情吗?),我确实会这样做。