2014-10-09 90 views
1

我正在修改必須在VB6中運行的舊項目,並且我有OOP體驗,但不是VB。VB6 - 調用潛在客戶

無論如何,我認爲這將是直截了當的,我需要添加數據到散列表。

我可以調用retreive數據函數,但不能調用set數據函數。

這裏是設置數據功能(或子我猜)。

Sub SetSetting(Name As String, Value) 
    Member of MBCSettings.MBCSettings 
    Store the named setting in the current settings map 

所以,如果我嘗試設置這樣的事情:

gobjMBCSettings.SetSetting("UserName", "223") 

我得到:編譯器錯誤,應爲「=」

是我的對象破還是我失去了一些東西明顯?謝謝。

+6

嘗試沒有parens:'gobjMBCSettings.SetSetting「UserName」,「223」' – 2014-10-09 16:10:04

+0

這很有效,謝謝!這種奇怪的語言。 – Rob 2014-10-09 16:15:01

+1

另請參閱http://stackoverflow.com/questions/10107259/is-it-possible-to-call-a-vb-function-without-the-parenthesis和一些與此有關的其他問題 – MarkJ 2014-10-09 16:25:40

回答

3

啊VB6 ...是的。

爲了調用一個方法,你不要用括號括標準的方式:如果你想使用括號,釘在call命令

gobjMBCSettings.SetSetting "UserName", "223" 

Call gobjMBCSettings.SetSetting("UserName", "223") 

應當注意如果使用括號ByRef而沒有使用Call關鍵字,則參數將以ByVal發送。

Public Sub MySub(ByRef foo As String) 
    foo = "some text" 
End Sub 

Dim bar As String 
bar = "myText" 
MySub(bar) 
' bar is "myText" 
Call MySub(bar) 
' bar is "some text" 

它只是抱怨,因爲你傳遞了包含一組括號的多個參數。使用()強制ByVal也適用於VB.NET。

+0

'在沒有Call關鍵字的ByRef參數周圍使用括號,參數將作爲ByVal發送.' ...這是絕對令人厭惡的。 – helrich 2014-10-09 19:38:43

+0

@helrich:這是一個表達。如果使用'val + 0'而不是'(val)',則表達式將在臨時局部變量中計算,而後者又將傳遞'ByRef'。 – wqw 2014-10-10 13:16:45

相關問題