2016-10-17 22 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部分から1件の結果を取得し、今のシステムを知っているが、それがなかった場合でも、私は上書きされなければならない問題のことを確認していません私の結果、正しい?

+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'に決して値を代入していないので、 ) –

答えて

2

@omegastripesと指摘されているように、サブシステムには戻り値がありません。

変更

Sub checkXML(sFile) 
    ... 
End Sub 

Function checkXML(sFile) 
    ... 
End Function 

See alsoへ。