2013-04-11 1 views
0

J'ai une fonction vbscript avec crée et ouvre un fichier texte. Je souhaite renvoyer le handle de fichier de la fonction au corps principal du code. Malheureusement, je reçois un objet ne supporte pas cette propriété ou erreur de méthode. En fin de compte, je vais définir le code où j'aurai un script de débogage qui aura des fonctions pour ouvrir, écrire, lire et fermer des fichiers. Ensuite, je peux importer ce script dans un autre fichier vbscript et l'utiliser à des fins de débogage. Mais, d'abord, je dois obtenir le code ci-dessous pour fonctionner.Renvoyer le handle de fichier à partir de la fonction dans vbscript

Merci d'avance.

Voici le code:

Function OpenFileWrite(sDirectory, sFile) 
    Dim objFSO 'As FileSystemObject 
    Dim objTextFile 'As Object 

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

    Set objFSO = CreateObject("Scripting.FileSystemObject") 

    ' Check that the strDirectory folder exists 
    If objFSO.FolderExists(sDirectory) Then 
      Set objFolder = objFSO.GetFolder(sDirectory) 
    Else 
      Set objFolder = objFSO.CreateFolder(sDirectory) 
      WScript.Echo "Just created " & sDirectory 
    End If 

    If objFSO.FileExists(sDirectory & "\" & sFile) Then 
      Set objFile = objFSO.GetFile(sDirectory & "\" & sFile) 
    Else 
      Set objFile = objFSO.CreateTextFile(sDirectory & "\" & sFile) 
      Wscript.Echo "Just created " & sDirectory & "\" & sFile 
    End If 

    Set objTextFile = objFSO.OpenTextFile(sDirectory & "\" & sFile, ForWriting, True) 

    OpenFileWrite = objTextFile 

End Function 

sDirectory = "\" 
sFile = "debug.txt" 

Set ObjFile = OpenFileWrite(sDirectory, sFile) 

Répondre

2

Vous devez Set assigner un objet à une variable ou valeur de retour de la fonction:

OpenFileWrite = objTextFile 
==> 
Set OpenFileWrite = objTextFile 

(En Set OpenFileWrite = objTextFile le Set obéit à la règle "Utiliser Set pour affecter un objet", le OpenFileWrite = 'implémente' la règle "assigner au nom de la fonction pour spécifier la valeur de retour ".)

+0

Merci. Ce qui est bizarre est de faire une simple recherche sur Google pour savoir comment retourner une valeur à partir d'une fonction ne mentionne pas que vous devez appliquer le mot-clé Set. Je ne comprends pas pourquoi d'autres exemples n'utilisent pas le mot-clé Set lors du renvoi d'une valeur à partir d'une fonction. – user717236

Questions connexes