raccolta ASP FileSystemObject non è possibile accedere in base all'indice
-
21-08-2019 - |
Domanda
Sto diventando pazzo? non riesco a trovare una via per entrare in possesso del primo file in una cartella con il FileSystemObject (ASP classico). Con la maggior parte raccolte si potrebbe pensare che l'indice 0 oppure 1 potrebbe funzionare, ma IIS dice "non valido chiamata di procedura o argomento".
Nessuno di questi ultimi 2 linee di lavoro:
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
mi viene mega-stupido, o c'è alcun modo per utilizzare un indice per accedere a questa raccolta particolare?
Soluzione
La collezione file non è un array, e non contiene la funzionalità ad accesso casuale. Se avete assolutamente bisogno di questa funzionalità, la cosa più vicina ad imitare sarebbe per scorrere la cartella e creare un nuovo array contenente i nomi dei file trovati, utilizzare questo nuovo array come origine ad accesso casuale, e creare oggetti File dalla valori di matrice.
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))
Certamente non consiglio questo se è affatto evitabile.
Altri suggerimenti
No, ma li si può enumerare e rintracciare l'indice da soli:
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