2014-10-09 93 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

相关问题