2011-05-28 34 views
1

美好的一天,所有。檢查COM對象收集屬性存在

我一直在琢磨這一段時間。我編程式(在VB6中)篩選Outlook PST,索引其中的項目。我遇到了一個有點損壞的地方,這是我遇到困難的地方。我的程序附加了PST並開始鑽取文件夾(olFolder)。這些Outlook創建的對象應該有一個集合,通常會保存子文件夾(適當地命名爲文件夾)。

在我的代碼執行過程中,我遞歸地調用進程文件夾函數來處理當前文件夾中的所有文件夾,但我有一個沒有集合的文件夾。這會導致異常,因爲我正在檢查集合中文件夾的數量,並且沒有任何內容需要檢查。我知道如何檢查一個對象的存在,但是我很難檢查一個對象中是否存在一個集合。任何人都遇到過這個?

UPDATE

表達:

If Not fl.Folders Is Nothing Then 

結束拋出異常太。那我得到的例外是:

Could not complete the operation because the service provider does not support it. 

這只是試圖訪問這似乎有被FUBARed一個文件夾集合屬性這個損壞的文件夾時。

FINAL Alrighty。在這種情況下,我只是要進行一些內聯​​的錯誤處理。

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

回答

1

如果你正在談論覈查是否obj.Coll.Count = 0,然後看是否obj.Coll Is Nothing

+0

嗯。我可以發誓我已經試過了,並且拋出了一個例外......好吧,非常感謝你的幫助。這是我在星期六早上工作時得到的...... – CodeWarrior 2011-05-28 13:53:13

+0

起初,它看起來像是有效的,但是顯然我嘗試過,並沒有奏效。我會在上面的文章中添加更多的細節。 – CodeWarrior 2011-05-28 14:06:42

+0

雖然這不是我的答案,但我正在處理一個嚴重的PST文件,Outlook令人不安,這確實是我如果這是一個更「正常」的做法(是否有這樣的發展中的事情?)的情況。 – CodeWarrior 2011-06-10 14:21:16

0

當我在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