2013-01-22 2 views
0

내가 VBS에 새로운 오전과 내가 배열VBS 유형 불일치 오류 800a000d 유형 불일치 : ReadFile을

내로 파일을 읽으려고하고있는 라인 세트 편곡 = 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

귀하의

012을 사전에 잘못

감사를하고있는 중이 야 무엇을 알아낼 수 없습니다

set arr = readfile(FileName) 

readfile()이 (ArrayList를 반환하는) 함수임을 의미합니다. 하지만 당신은

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

ADDED로 변경하려고 할 수 있습니다

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

을 정의

작업 "배열로 파일 '라인을 읽기"더 수행 할 수 있습니다 더 간단한 방법 :

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 : 모든 시간을 배우기 –