>>>Подписаться на обновления блога!<<<

7 комментариев к записи “Урок 9 по VBScript: Массивы”

  1. Александр says:

    Владимир, у меня вот такая проблема:
    1) Есть XML с тест данными:
    ......
    field name="Id" type="number">123444</field>
    <field name="Version" type="number">2</field>
    ......
    2) Далее происходит парсинг XML в двумерный массив (успешно)
    ....
    array(0,1)="ID"
    array(1,1)=123444
    array(0,2)="Version"
    array(1,2)=2

    Размерность массива array(1,78).
    Задача:
    Необходимо найти в массиве  значение для поля ID  и передать ее в  переменную.
    Что то с алгоритмом никак не могу разобраться:

    For i=LBound(array,1) to Ubound (array,1)
    For j=Lbound(array,1) to Ubound(array,1)
    If  array(0,j)="ID"   Then
    ID=array(1,j)
             End If
     MsgBox "New ID is:" & array(1,j) , 64
        Next
    Next
    это не работает.
     

    • Владимир Баталий says:

      Сейчас гляну.

    • Владимир Баталий says:

      dim array(78,1)
      dim ID
      ID=""

      array(0,0)="ID"
      array(0,1)=123444
      array(1,0)="Version"
      array(1,1)=2
      array(2,0)="ID"
      array(2,1)=22.5

      For i=LBound(array,1) to Ubound (array,1)
          For j=Lbound(array,2) to Ubound(array,2)
              if j=0 then
                  if  array(i,0)="ID"   Then
                      ID=array(i,1)
                      MsgBox "New ID is: " & ID, 64
                  end if
              End If
          Next
      Next

      Теперь работает

    • Владимир Баталий says:

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

    • Владимир Баталий says:

      Напишите, помог ли Вам мой ответ.

  2. Александр says:

    Владимир, добрый день!

    Я допустил неточность :oops: , не указал что ID присутствует в одном экземпляре в массиве.

    Ваш код работает абсолютно корректно и он вытаскивает все значения для ID!

    После парсинга у меня заполнен двумерный массив:

    arr(0,0) = "ID" - название поля
    arr(1,1)=12344 - значение поля ID ( <field name="Id" type="number">12334</field>). 
    arr(0,1)="Version" название поля
    arr(1,2)=2 - значение поля Version (<field name="Version" type="number">2</field>)
    arr(0,3)="City"
    arr(1,3)=Moscow  и т.п.

    Цикл должен найти в массиве DatabaseID (0,j) и вывести его значение (1,j) в переменную и после этого цикл должен закончиться.

     

     

  3. Александр says:

    Владимир, привет!
    Ниже вариант который работает:

    sFnd = "ID"
    For i = 0 To UBound(array, 2)
        If sFnd = pAllLegs(0, i) Then
           Id = pAllLegs(1, i)
           Exit For
        End If
    Next