2016-10-17 5 views
0

VBScript의 서브 루틴에서 문자열을 반환하려고하는데 형식이 일치하지 않습니다. 여기 VBScript 함수 Return

코드입니다 :

main 

Sub Main 
    Dim NumofBatches, Batch1 
    CStr(Batch1) 
    Batch1 = checkXML("Bar.xml") 
End Sub 

'Checks For Batch in ZoneX 
Sub checkXML(sFile) 
    Set objFileToRead = CreateObject("Scripting.FileSystemObject").OpenTextFile("D:\Projects\Scripts\SQL\" + sFile, 1) 
    Dim strLine, x, y 
    Do While Not objFileToRead.AtEndOfStream 
    CStr(StrLine) 
    strLine = objFileToRead.ReadLine() 
    'String Foo 
    If (x > 3) Then 
     If (InStr(strLine, """") = 1) Then 
     CheckXMl = "" 
     Else 
     CheckXMl = StrLine 
     End If 
    End If 
    Loop 
    objFileToRead.Close 
    Set objFileToRead = Nothing 
End Sub 

그리고 난, 난 단지 If (x > 3) Then 부분에서 하나 개의 결과를 가져옵니다 지금 시스템을 알고 있지만 그렇지하더라도 난 단지 덮어 쓰기해야 문제의 확실하지 않다 내 결과가 맞습니까?

+3

'Sub() ... End Sub' 대신'Function() ... End Function'을 사용하여 결과를 반환하십시오. – omegastripes

+0

흠,이 작동하는 것,하지만 [이] (http://stackoverflow.com/questions/15667421/vbscript-return-value-from-a-function) 달리 나를 믿게했다. –

+0

[대답] (http://stackoverflow.com/a/15667474/6352151)에 게시 한 질문에 @omegastripes 님이 전한 내용이 정확히 나와 있습니다. 그리고 빠른 FYI :이 코드 ->'Cstr (StrLine)'은 코드에서 아무 것도하지 않고'x'에 값을 할당하지 않으므로'if' 부분을 입력하지 않는다고 믿습니다 :) –

답변

2

@omegastripes으로 지적했듯이 잠수함에는 반환 값이 없으므로 함수 만 수행합니다.

변경

Sub checkXML(sFile) 
    ... 
End Sub 

Function checkXML(sFile) 
    ... 
End Function 

See also합니다.