1

Тема: VBS: Отличие коллекции от массива

Работать с элементами коллекции можно через For Each? Но не могу понять почему у меня происходит присвоение корректно?

Ведь я работаю с коллекцией ? А по факту получается обращаюсь с любым из элементов данной коллекции


dim UserActiv
dim UserSettingsLine
dim UserHowMuchAdres

' Переменная для обнуления данных в таблицах
Dim FilesSelectElementHave
FilesSelectElementHave = 0

' Переменные созданные для работы с данными пользователя
dim UserSettingsLogin()
dim UserSettingsAdres()
dim UserSettingsLastName()
dim UserSettingsName()
dim UserSettingsMiddleName()
dim UserSettingsEmail()
dim UserSettingsPhone()
dim UserSettingsTabel()
dim UserSettingsOtdel()
' переменная для определения доступности профиля
dim UserSettingsDostup()

' Обозначение размерности первого массива
reDim UserSettingsLogin(0)
reDim UserSettingsAdres(0)
reDim UserSettingsLastName(0)
reDim UserSettingsName(0)
reDim UserSettingsMiddleName(0)
reDim UserSettingsEmail(0)
reDim UserSettingsPhone(0)
reDim UserSettingsTabel(0)
reDim UserSettingsOtdel(0)
reDim UserSettingsDostup(0)

    ' Считывание файла конфигурации пользователя
    Dim objFSO, oFso
    Set objFso = CreateObject("Scripting.FileSystemObject")
    i=0
    UserHowMuchAdres=-1
    if  objFso.FileExists(ClientFiles)  Then
        Set objNetwork = CreateObject("Wscript.Network")
        'MsgBox objNetwork.UserName
        UserActiv = objNetwork.UserName                        
        Set vStream = objFso.OpenTextFile(ClientFiles, 1, True) 
            Do Until vStream.AtEndOfStream 'цикл по строкам файла
                sLine = vStream.ReadLine 
                UserSettingsLine = Split(sLine,";")
                if  UserSettingsLine(0) <> "---" Then 
                'Производим убираем табуляцию и знаки пробела
                UserSettingsLine(0) = replace(UserSettingsLine(0), chr(9), chr(32))
                'MsgBox "=" &Trim(LCase(UserSettingsLine(0)))&"="
                    if  Trim(LCase(UserSettingsLine(0))) = LCase(UserActiv) Then
                        UserHowMuchAdres=i
                        UserSettingsLogin(i)         = Trim(replace(UserSettingsLine(0), chr(9), chr(32)))
                        UserSettingsAdres(i)         = Trim(replace(UserSettingsLine(1), chr(9), chr(32)))
                        UserSettingsLastName(i)     = Trim(replace(UserSettingsLine(2), chr(9), chr(32)))
                        UserSettingsName(i)         = Trim(replace(UserSettingsLine(3), chr(9), chr(32)))
                        UserSettingsMiddleName(i)     = Trim(replace(UserSettingsLine(4), chr(9), chr(32)))
                        UserSettingsEmail(i)         = Trim(replace(UserSettingsLine(5), chr(9), chr(32)))
                        UserSettingsPhone(i)         = Trim(replace(UserSettingsLine(6), chr(9), chr(32)))
                        UserSettingsTabel(i)         = Trim(replace(UserSettingsLine(7), chr(9), chr(32)))
                        UserSettingsOtdel(i)         = Trim(replace(UserSettingsLine(8), chr(9), chr(32)))
                        UserSettingsDostup(i)         = 0
                        'MsgBox UserSettingsLine(0)
                        'MsgBox UserSettingsLine(1)
                        'MsgBox UserSettingsLine(2)                        
                        'MsgBox UserSettingsLine(3)                        
                        'MsgBox UserSettingsLine(4)
                        'MsgBox UserSettingsLine(5)    
                        'MsgBox UserSettingsLine(6)
                        'MsgBox UserSettingsLine(7)    
                        'MsgBox UserSettingsLine(8)    
                        
                        
                        i=i+1
                        reDim preserve UserSettingsLogin(i)
                        reDim preserve UserSettingsAdres(i)
                        reDim preserve UserSettingsLastName(i)
                        reDim preserve UserSettingsName(i)
                        reDim preserve UserSettingsMiddleName(i)
                        reDim preserve UserSettingsEmail(i)
                        reDim preserve UserSettingsPhone(i)
                        reDim preserve UserSettingsTabel(i)
                        reDim preserve UserSettingsOtdel(i)
                        reDim preserve UserSettingsDostup(i)
                    End If
                Else
                    Exit Do                    
                End If
            Loop
        vStream.Close 'закрываем файл
        Else
            
            MsgBox "Файл конфигурации пользователя" &ClientFiles &"не найден обратитесь к администратору!"
            window.close
    End If    

в частности вот эти строчки:

                        UserSettingsLogin(i)         = Trim(replace(UserSettingsLine(0), chr(9), chr(32)))
                        UserSettingsAdres(i)         = Trim(replace(UserSettingsLine(1), chr(9), chr(32)))
                        UserSettingsLastName(i)     = Trim(replace(UserSettingsLine(2), chr(9), chr(32)))
                        UserSettingsName(i)         = Trim(replace(UserSettingsLine(3), chr(9), chr(32)))
                        UserSettingsMiddleName(i)     = Trim(replace(UserSettingsLine(4), chr(9), chr(32)))
                        UserSettingsEmail(i)         = Trim(replace(UserSettingsLine(5), chr(9), chr(32)))
                        UserSettingsPhone(i)         = Trim(replace(UserSettingsLine(6), chr(9), chr(32)))
                        UserSettingsTabel(i)         = Trim(replace(UserSettingsLine(7), chr(9), chr(32)))
                        UserSettingsOtdel(i)         = Trim(replace(UserSettingsLine(8), chr(9), chr(32)))

2

Re: VBS: Отличие коллекции от массива

Прошу прощения если некорректно описал проблему. Буду стараться в своих вопросах указывать только суть.
Переписал весь код что б Вам ответить, который ранее вставил, и все заработало корректно, видимо много лишнего было и разобрался как работает коллекция. Спасибо.