Тема: VBS: Особенность доступа к элементам коллекций
Доброго здоровья, уважаемые профессионалы и любители.
Экспериментируя с объектами WScript.Shell и Scripting.FileSystemObject обнаружил, что элементы одних коллекций доступны как для конструкций For Each <var> In <collection>, так и по численному индексу, а элементы других - только для For Each <var> In <collection>.
Пример:
Option Explicit
Dim FSO, WS, FSOFoldCollect, SpecFoldColl, SpecFold, StrResult, I
Set WS = CreateObject("WScript.Shell")
Set SpecFoldColl = WS.SpecialFolders
'=============== это работает =================
StrResult=vbNullString
FOR Each SpecFold in SpecFoldColl
StrResult = StrResult & SpecFold & vbCrLf
Next
MsgBox StrResult
'==============================================
'=============== и это работает ===============
StrResult=vbNullString
FOR I=0 to SpecFoldColl.Count-1
StrResult = StrResult & SpecFoldColl.Item(I) & vbCrLf
Next
MsgBox StrResult
'==============================================
Set FSO = CreateObject("Scripting.FileSystemObject")
Set FSOFoldCollect = FSO.GetFolder(".").SubFolders
'=============== это работает =================
StrResult=vbNullString
FOR Each SpecFold in FSOFoldCollect
StrResult = StrResult & SpecFold.Path & vbCrLf
Next
MsgBox StrResult
'==============================================
'============= а это не работает ==============
StrResult=vbNullString
FOR I=0 to FSOFoldCollect.Count-1
StrResult = StrResult & FSOFoldCollect.Item(I).Path & vbCrLf
Next
MsgBox StrResult
'==============================================
Подскажите, это действительно так, или я что-то сделал неправильно, а элементы любой коллекции можно адресовать и по индексу тоже?