collection ASP FileSystemObject ne peut pas être consulté par index
-
21-08-2019 - |
Question
Est-ce que je deviens fou? Je ne pas trouver un moyen de mettre la main sur le premier fichier dans un dossier avec le FileSystemObject (ASP classique). Avec la plupart des collections que vous penseriez l'indice 0 ou 1 pourrait fonctionner, mais IIS dit « appel de procédure non valide ou argument ».
Aucune de ces 2 dernières lignes fonctionnent:
Set oFileScripting = CreateObject("Scripting.FileSystemObject")
Set oFolder = oFileScripting.GetFolder(sFolder)
Set oFiles = oFolder.Files
If oFiles.Count = 0 Then Response.Write "no files"
Response.Write oFiles(0).Name
Response.Write oFiles.Item(1).Name
Suis-je méga-bête, ou est-il pas moyen d'utiliser un index pour accéder à cette collection particulière?
La solution
La collection de fichiers est pas un tableau, et ne contient pas la fonctionnalité d'accès aléatoire. Si vous avez absolument besoin de cette fonctionnalité, la chose la plus proche de l'imiter serait de parcourir le dossier et créer un nouveau tableau contenant les noms des fichiers trouvés, utilisez ce nouveau tableau comme source d'accès aléatoire, et créer des objets de fichiers à partir de la Les valeurs de tableau.
ReDim FileArray(oFiles.Count)
i = 0
For Each oFile In oFiles
FileArray(i) = oFile.Name
i = i + 1
Next
Set oFile = oFileScripting.GetFile(sFolder + "\" + FileArray(0))
Je certainement ne recommanderais pas cela s'il est tout évitable.
Autres conseils
Non, mais vous pouvez les énumérer et de suivre l'index vous:
Set oFileScripting = CreateObject("Scripting.FileSystemObject")
Set oFolder = oFileScripting.GetFolder(sFolder)
Set oFiles = oFolder.Files
If oFiles.Count = 0 Then Response.Write "no files"
i = 0
For Each oFile In oFiles
Response.Write i & " = " & oFile.Name
i = i + 1
Next