Vbs Collection

Программирование на Active Server Pages и VBScript.
Bsplesk
Начинающий
Начинающий
 
Сообщения: 10
Зарегистрирован: 26.10.2005 (Ср) 14:07

Vbs Collection

Сообщение Bsplesk » 28.06.2009 (Вс) 17:47

Возникла проблема, как в VBS напрямую обратится к объекту коллекции?
вот фрагмент кода
Код: Выделить всё
   '   Перебираю объекты коллекции
   '   Определяю кол-во kolvoLansadapters (нумерация с 0)
   For Each NetCard in CollectionNetsCards
      '   Если в PNPDeviceID первые три буквы = PCI, то считаем, что это сетевая "Железка"
      NetCardPNPDeviceID =  NetCard.PNPDeviceID
      '   Есле PNPDeviceID не равно Null и равно "PCI", = искомая сетевая плата
      If  IsNull(NetCardPNPDeviceID) = False And Mid(NetCardPNPDeviceID, 1, 3) = "PCI"  Then
         If IsEmpty(kolFindLansadapters) = True Then
            kolFindLansadapters = 0
         Else    
            kolFindLansadapters = kolFindLansadapters +1
         End If
      '   Заполняю/расширяю массив FindIndexLansadapters(
      '   Определяю index найденного адаптора и впихиваю в массив
         ReDim Preserve FindIndexLansadapters(kolFindLansadapters)
         FindIndexLansadapters(kolFindLansadapters) = NetCard.Index
         MsgBox FindIndexLansadapters(kolFindLansadapters) 
      End If
   Next

Далее хочу обратится к объекту коллекции, вот так CollectionNetsCards(13).Name
Получаю Error: Общая ошибка, code 80041001, Sourse SWbemObject
Долго не программировал, теперь что-то туплю.

И хотелось спросить совет, теоритический, если неизвестно конечое кол-во элементов, то как их лучше поместить в массив.
Пока в голову приходит 1, зарание подсчитать кол-во элементов. Но тогда будет два почти одинаковых цикла перебирающих коллекцию. 2 В первом цикле выбрать только нужные элементвы коллекции и занести их в массив, а далее перебирать только эти элементы....вот в этом и возникла проблема. Использовать Preserve не подходит т.к массив многомерный
Всё что я делаю это одна большая ошибка![в последние время она научилась размножаться и распространяться :]

ALX_2002
Мега гуру
Мега гуру
 
Сообщения: 2054
Зарегистрирован: 25.11.2002 (Пн) 20:03

Re: Vbs Collection

Сообщение ALX_2002 » 22.09.2009 (Вт) 13:16

1) Ммм.... Подозерваю, что эта коллекция CollectionNetsCards не имеет ассоциативных ключей и поэтому по индексу к ней обратиться нельзя. Только перебором For Each

2) Redim Preserve можно и для многомерного массива использовать. Главное чтобы наращивался только конечный элемент

Код: Выделить всё
    Dim aa()
    ReDim aa(1, 1)
    ReDim Preserve aa(1, [b]2[/b])
    ReDim Preserve aa(1, [b]3[/b])
    ReDim Preserve aa(1, [b]4[/b])


Вернуться в ASP и VBScript

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6

    TopList