A partir da versão 5.1 do Elipse E3/Power, foi implementado o suporte ao uso de índices para arrays em expressões de associações. Dessa forma, estes arrays podem ser de qualquer dimensão.
Arrays são geralmente descritas como “lista de objetos”; antes de mais nada, elas são basicamente objetos que contem múltiplos valores armazenados em uma lista. Um objeto array pode ser armazenado em variáveis e ser tratado de forma muito similar a qualquer outro tipo de valor; a diferença está em podermos acessar cada valor dentro da lista individualmente, e fazer coisas úteis e eficiente com a lista, como laço através da lista e fazer a mesma coisa para cada valor.
Exemplo:
Tag(1) ou Tag(1,2) ou Tag(1,2,3) seriam válidos se os Tags contivessem arrays de 1, 2 ou 3 dimensões, respectivamente.
Os índices para arrays em expressões de associações não precisam aparecer necessariamente ao lado de um nome de objeto.
Exemplo:
arr = Array(1,Array(1,2,3),4) msgbox arr(1)(2) 'Return 3 msgbox arr(2) 'Return 4 Screen.Item("TagArray").Value = arr
A expressão acima, que já funcionava no VBScript, agora também funciona no Elipse E3, em associações. O primeiro índice (1) acessa o Array dentro do Array, e o segundo índice pega o elemento dentro desse array (o resultado nesse caso é 3). Isso acontece porque os arrays do VBScript sempre iniciam no índice 0.
Exemplo de associação:
A seguir, veja um exemplo de utilização de array multidimensional via scripts/links.
Via script:
Dim arr(3) arr(1)= Array("IO.Ethernet.MainIP", "Parent.IP") arr(2) = Array("IO.Ethernet.MainPort", "Parent.Porta") arr(3) = Array("ModiconModbus.DefaultSlaveAddress", "Parent.Address") msgbox arr(1)(0) 'return IO.Ethernet.MainIP msgbox arr(3)(1) 'return Parent.Address Screen.Item("TagArray").Value = arr
Via associação:
Obs.: O suporte a arrays em associações atualmente é apenas de leitura. Ou seja, é possível extrair o valor de uma posição de um array, mas não escrever de volta em uma posição de array.