2011-01-21 159 views
3

我越來越對我使用以下VB6類型不匹配錯誤

IF obj.propery THEN 
    ... 
    END IF 

代碼以下類型不匹配錯誤是視覺源安全,當其他開發者運行在同一個項目的代碼,並沒有錯誤運行。該屬性實際上是一個字符串,它可能是問題所在。當我調試和測試屬性,即

?obj.propery = True 

沒有錯誤,這是有點奇怪。如果我將光標放在屬性上,它會顯示「True」。我已經做了一些關於此事的搜索,並發現這可能與OPTION STRICT有關,但是我擁有與其他開發者相同版本的代碼,OPTION STRICT沒有關閉,它沒有被改變在代碼中。在運行時是否還有其他可能影響代碼執行的設置?

+2

在VB 6中沒有`Option Strict`。您所做的搜索可能已經打開了與VB.NET相關的資源。這不是,呃,其他*開發人員可能使用VB.NET,是嗎? – 2011-01-21 09:25:35

+0

由於聲明瞭什麼類型的'obj'? – jakdep 2011-01-21 09:37:22

+0

obj是一個自定義類型,屬性是一個字符串屬性。 – 2011-01-21 09:40:51

回答

0

我傾向於在你的IF條件更明確的

IF isempty(obj.property) = false AND isnull(obj.property) = false 

這將是審慎的檢查obj不爲null首先,你開始訪問其前屬性....

2

這與VB6無關,它是與XP模式和使用我的用戶帳戶從另一個域而不是XPMUser。當我使用XPMUser運行應用程序時,這非常奇怪,我不確定這是爲什麼。如果任何人有我願意聽到的理由。

3

它讓我感到你的類型不匹配錯誤可能是完全不同的原因,特別是當你訪問一個對象屬性時。由於某種原因,我遇到了這個錯誤,它指向與已註冊的不同的DLL。你會發現用VB在構建它時會「動態地」註冊一個DLL,所以你最終可能會訪問那些你並不期待的代碼。這可能不是你的問題,但值得探討。