2016-10-17 63 views
0

我想从VBScript中的子例程返回一个字符串,但我得到的类型不匹配。VBScript函数返回

下面是代码:

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

使用'Function()... End Function'而不是'Sub()... End Sub'来返回结果。 – omegastripes

+0

嗯,这似乎工作,但[本](http://stackoverflow.com/questions/15667421/vbscript-return-value-from-a-function)导致我相信,否则.. –

+0

[回答]( http://stackoverflow.com/a/15667474/6352151)到你发布的问题是明确告诉@omegastripes。并且一个简单的FYI:这段代码 - >'Cstr(StrLine)'在你的代码中完全不做任何事情,再加上我相信它甚至不会进入'if'部分,因为你从不给'x'赋值: ) –

回答

2

由于@omegastripes指出,subs没有返回值,只有函数做。

变化

Sub checkXML(sFile) 
    ... 
End Sub 

Function checkXML(sFile) 
    ... 
End Function 

See also