2011-12-13 2 views
0

Je suis nouveau à VBScript, et j'ai une fonction qui me permet de tirer la synchronisation des préférences d'un fichier de préférences, et il ressemble à ceci:Objet requis d'un paramètre dans 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 

Mais lorsque je tente de l'exécuter, Windows me jette une erreur de "Object required: SyncFolder" chaque fois qu'il arrive à cette fonction. Pourquoi est-ce? SyncFolder est juste un paramètre?

Répondre

3

Dans VBScript, chaque variable n'a pas certaines méthodes intégrées. Et si une variable a une propriété ou une méthode, cela signifie que c'est un objet. Mais votre paramètre ne semble pas être un objet, c'est pourquoi l'erreur est survenue.
Donc, il n'y a pas de méthodes intégrées telles que SubString ou une autre pour les variables de chaîne dans le VBScript.

  1. Utilisez la fonction Len pour obtenir la longueur de chaîne au lieu de .Length.
  2. Utilisez les fonctions Mid, Left ou Right dont une si vous avez besoin de .SubString.

Je suppose que vous devez utiliser -avec order-Len, gauche et droite fonctions dans ce cas.

Considérez ceci:

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