Требуется ли объект для параметра в VBScript? - PullRequest
0 голосов
/ 13 декабря 2011

Я новичок в VBScript, и у меня есть функция, которая позволяет мне извлекать синхронизирующие настройки из файла настроек, и это выглядит так:

Function IsSync(SyncFolder)
    If FS.FileExists(PrefFilePath) Then
        Set objFile = FS.OpenTextFile(PrefFilePath, 1)
        PrefLine = "start"
        Do Until Prefline.Substring(0, SyncFolder.Length) = SyncFolder
            PrefLine = objFile.Readline
        Loop

        If PrefLine.Substring(PrefLine.Length - 6) = "nosync" Then
            IsSync = False
        Else
            IsSync = True
        End If
    Else
        IsSync = True
    End If
End Function

Но когда я пытаюсь запустить его, Windows выдает мне сообщение об ошибке «Требуется объект: SyncFolder» всякий раз, когда он попадает в эту функцию. Почему это? SyncFolder это просто параметр?

1 Ответ

3 голосов
/ 14 декабря 2011

В VBScript каждая переменная не имеет встроенных методов. И если переменная имеет свойство или метод, это означает, что это объект. Но ваш параметр не похож на объект, поэтому произошла ошибка.
Таким образом, в строковых переменных в VBScript нет встроенных методов, таких как SubString или других.

  1. Используйте функцию Len , чтобы получить длину строки вместо .Length.
  2. Используйте Mid , Влево или Вправо функции, которые, если вам нужно, вместо .SubString.

Полагаю, вам нужно использовать -с порядком- Len , Left и Right в этом случае.

Учтите это:

Function IsSync(SyncFolder)
    If FS.FileExists(PrefFilePath) Then
        Set objFile = FS.OpenTextFile(PrefFilePath, 1)
        PrefLine = "start"
        Do Until Left(Prefline, Len(SyncFolder)) = SyncFolder 'starts with SyncFolder
            PrefLine = objFile.Readline
        Loop

        If Right(PrefLine, 5) = "nosync" Then 'ends with "nosync"
            IsSync = False
        Else
            IsSync = True
        End If
    Else
        IsSync = True
    End If
End Function
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...