2016-09-22 55 views
1

我使用似乎不是用VB嚴格的選項 它拍攝警告VB2008:延遲分辨率;

後期綁定的分辨率兼容的功能可能會發生運行時錯誤;運行時錯誤可能發生。

Public Function RegRead(ByVal Path As String) As String 
     Dim ws As Object 

     On Error GoTo ErrHandler 
     ws = CreateObject("WScript.Shell") 
     RegRead = ws.RegRead(Path) 
     Return RegRead 
     Exit Function 

ErrHandler: 
     RegRead = "" 
    End Function 

它sugests與 「ws.RegRead」 東西

enter image description here

誰能告訴我如何修改這沒有預警?

回答

3

你的問題是,你有

Dim ws As Object 

這意味着,編譯器不知道用什麼方法可在ws,所以所有的方法調用將被後期綁定。由於編譯器無法檢查該方法調用是否正確(名稱,參數類型是否正確),因此此檢查在運行時發生。如果有任何錯誤,那麼你將有一個運行時錯誤。與Option Strict它會給你一個警告。

相反,您應該使用爲.NET設計的API,例如Registry類。

+0

如果我註釋掉那一行,我得到一個錯誤,說「名稱ws未聲明」,租約更詳細 –

+0

是的,'Option Strict'需要你聲明的東西。這不是一個單行修正,您應該使用現代API來訪問註冊表。 – Erik

+0

我在這裏的原因是爲了學習新事物。這就是爲什麼我會請你告訴我如何解決這個問題。 –