Ошибка выполнения VBscript - PullRequest
       4

Ошибка выполнения VBscript

0 голосов
/ 28 декабря 2010

У меня есть VBScript, который я работаю над сборкой.Сам скрипт выполняет все функции внутри него - он выдает ошибку только после того, как скрипт завершится.Это дает мне следующую ошибку: vbscript runtime error: Требуется объект 'objFSO'

Вот соответствующая функция:

Function ReadFileIntoArray (sFile)
    dim objFSO 'As FileSystemObject
    dim file
    dim volumes()

    Set file = objFSO.OpenTextFile(sFile)  'Error Thrown Here.
    do while not file.AtendOfStream
        redim preserve text(nlines)
        volumes(nlines) = file.Readline
        nlines = nlines + 1
    loop

    file.close
    set file = nothing
    Set objFSO = nothing

    ReadFileIntoArray = volumes
end Function 

Файл все еще открыт и используется правильно.Я немного растерялся.Есть идеи?

Ответы [ 3 ]

3 голосов
/ 28 декабря 2010

objFSO никогда не присваивается значение.При возникновении ошибки значение objFSO равно Empty, которое не является объектом.

Возможно, вам не хватает

   Set objFSO = CreateObject("Scripting.FileSystemObject")
0 голосов
/ 27 февраля 2014

Если вы используете что-то вроде:

Set objFSO = CreateObject("Scripting.FileSystemObject") 

strVar = ReadFileIntoArray(File)

оно входит в функцию, тогда вам не нужно переназначать объект objFSO, просто напишите:

Function ReadFileIntoArray (sFile)

dim file
dim volumes()

Set file = objFSO.OpenTextFile(sFile)  'Error Thrown Here.
do while not file.AtendOfStream
    redim preserve text(nlines)
    volumes(nlines) = file.Readline
    nlines = nlines + 1
loop

file.close
set file = nothing
Set objFSO = nothing

ReadFileIntoArray = volumes
end Function
0 голосов
/ 30 декабря 2010

@ Nutsy: @ У Смита есть ответ, я просто думаю, что вам, возможно, придется явно указать, как вы хотите открыть файл. Я обновил ваш код, добавив в него constants:

Function ReadFileIntoArray (sFile)
    dim objFSO 'As FileSystemObject
    dim file
    dim volumes()

    Const ForAppending = 8
    Const ForReading   = 1
    Const ForWriting   = 2

    Set objFSO = CreateObject("Scripting.FileSystemObject")        
    Set file = objFSO.OpenTextFile(sFile, ForReading)  'Error Thrown Here.
    do while not file.AtendOfStream
        redim preserve text(nlines)
        volumes(nlines) = file.Readline
        nlines = nlines + 1
    loop

    file.close
    set file = nothing
    Set objFSO = nothing

    ReadFileIntoArray = volumes
end Function

Могут быть и другие проблемы в скрипте, я не уверен, что будет делать redim preserve text(nlines), так как вы никогда больше нигде не определяете или не используете text и никогда не определяете или не инициализируете nlines как 0 ,

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...