2013-01-22 185 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为更简单的方法:),一直在学习 –