ASP FileSystemObjectオブジェクトのコレクションは、インデックスによってアクセスすることができません
-
21-08-2019 - |
質問
の私は狂っているか?の私は、ファイルシステムオブジェクト(クラシックASP)と、フォルダ内の最初のファイルのホールドを取得する方法を見つけることができません。ほとんどのコレクションを使用すると、インデックス0または1が働くかもしれないと思うだろうが、IISは、「無効なプロシージャ呼び出しまたは引数」と言います。
これらの最後の2行はどちらも動作します:
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
私はメガ愚かであること、またはこの特定のコレクションにアクセスするためにインデックスを使用する方法がないのですか?
解決
ファイルコレクションは、Arrayはなく、ランダムアクセス機能が含まれていません。あなたは絶対にこの機能が必要な場合は、それを模倣するために最も近いものは、フォルダを反復処理し、見つかったファイルの名前を含む新しい配列を作成し、ランダム・アクセス・ソースとしてこの新しい配列を使用し、そしてからFileオブジェクトを作成することです配列値ます。
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))
それがすべてで回避できる場合、私は確かにこのことをお勧めしません。
他のヒント
はありませんが、あなたはそれらを列挙し、インデックスを自分で追跡することができます:
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
所属していません StackOverflow