2013-01-22 275 views
0

我在VBS新和上午在該行集合ARR = ReadFile的(文件名)VBS類型不匹配錯誤800a000d類型不匹配:ReadFile的

我想讀一個文件到一個數組

得到一個錯誤並不能找出我做錯了

預先感謝您的幫助

Dim FileName ' File Name to Process 
Call MainProcedure 
WScript.Quit 

Sub MainProcedure 
    filename = "c:\print\check.bat" 
    WScript.Echo("Printing document in progress...") 
    WScript.Echo("Filename ====> " & FileName) 
    Dim arr, i 
    i = 0 
    set arr = readfile(FileName) 
    For Each present In arr 
    ' user = split(present,",") 
    ' WScript.Echo user(0) & user(1) & user(2) & user(3) & user(4) & "|" 
    i = i + 1 
    WScript.Echo present & "|" 
    Next 
End Sub 

Sub readfile(strFile) 
    dim fs,objTextFile 
    set fs=CreateObject("Scripting.FileSystemObject") 
    If (fs.FileExists(strFile)) Then 
    dim userArrayList 
    set objTextFile = fs.OpenTextFile(strFile) 
    Set userArrayList = CreateObject("System.Collections.ArrayList") 
    Do Until objTextFile.AtEndOfStream 
     strNextLine = objTextFile.Readline 
     userArrayList.add strNextLine 
    Loop 
    objTextFile.Close 
    set objTextFile = Nothing 
    set fs = Nothing 
    set readfile = userArrayList 
    Else 
    'Alert User 
    WScript.Echo("File does not exist!") 
    WScript.Quit() 
    End If 
end Sub 

回答

4

set arr = readfile(FileName) 

意味着readfile()是一個函數(返回一個ArrayList)。但是你定義

Sub readfile(strFile) 
... 
set readfile = userArrayList 
... 
end Sub 

你可以嘗試改變這

Function readfile(strFile) 
... 
set readfile = userArrayList 
... 
End Function 

新增:

任務「閱讀文件行到一個數組」可以在一個更完成更簡單的方法:

cscript fitoar.vbs 
0 Option Explicit 
1 Dim a : a = Split(CreateObject("Scripting.FileSystemObject").OpenTextFile("fitoar.vbs").ReadAll(), vbCrLf) 
2 Dim l 
3 For l = 0 To UBound(a) 
4  WScript.Echo l, a(l) 
5 Next 
6 
+0

謝謝,實際上我忽略了一個子不能返回一個值,也比ks爲更簡單的方法:),一直在學習 –