2014-10-09 4 views
1

VB6에서 실행해야하는 레거시 프로젝트를 수정 중이며 VB는 아니지만 OOP 경험이 있습니다.VB6 - 호출 서브

어쨌든 이것은 간단 할 것이라고 생각했습니다. 데이터를 해시 맵에 추가해야합니다.

데이터 검색 기능은 호출 할 수 있지만 데이터 설정 기능은 호출 할 수 없습니다.

다음은 설정 데이터 함수 (또는 하위 추측)입니다. 나는 이런 식으로 뭔가를 설정하려고하면

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

그래서 :

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

내가 얻을 : 컴파일러 오류를 예상 "="

내 객체가 고장난 또는 내가 뭔가를 분명 실종? 감사.

+6

괄호없이 시도하십시오 :'gobjMBCSettings.SetSetting "UserName", "223"' –

+0

감사합니다! 그런 이상한 언어. – Rob

+1

http://stackoverflow.com/questions/10107259/is-it-possible-to-call-a-vb-function-with-the- parenthesis와 이에 관련된 수많은 질문을 모두 참조하십시오. – MarkJ

답변

3

아 VB6 ... 예. 그것은 주목해야한다

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

: 당신이 call 명령에 괄호, 압정을 사용하려면

gobjMBCSettings.SetSetting "UserName", "223" 

: 괄호를 사용하지 않는 표준 방법을 메소드를 호출하기 위해

Call 키워드없이 ByRef 인수 괄호를 사용하면 인수는 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

+0

@helrich : 표현식입니다. '(val)'대신에'val + 0'을 사용하면, 표현식은 임시 로컬 변수에서 계산 될 것이고, 차례로'ByRef'가 전달 될 것입니다. – wqw