ASP FileSystemObjectオブジェクトのコレクションは、インデックスによってアクセスすることができません

StackOverflow https://stackoverflow.com/questions/848851

質問

私は狂っているか?の私は、ファイルシステムオブジェクト(クラシック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
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top