Publicações

AspClassico - Criar variaveis em tempo de execução

ASP: Nomes de Variáveis Dinâmicas
 

Vamos usar diferentes coisas em ASP: um array e as funções execute e eval. Ao mesmo tempo, vamos usar a função de divisão para criar o array.

Algumas Suposições

O exemplo a seguir parte de uma ideia precisa. Imagine que temos uma variável que contém valores diferentes. Esses valores são separados por ponto e vírgula. Algo como:

TheString = "01;02;03;04;05"
 

A variável acima está mudando dependendo, por exemplo, do conjunto de registros que recuperamos de uma tabela. Portanto, TheString não conterá os mesmos valores separados por ponto e vírgula. E nem mesmo o mesmo número de itens.

Precisamos criar um certo número de variáveis dependendo dos valores contidos em TheString e atribuir esses valores a diferentes variáveis. Em suma, precisamos obter algo como:

 a1 = "01" a2 = "02" a3 = "03" a4 = "04" a5 = "05"
 

Não existe uma relação real entre cada variável: o fato de o nome da variável ser a1 não tem relação com o fato de o valor atribuído ser "01". Ao mesmo tempo, não sabemos de antemão o número de variáveis de que precisaremos, porque não sabemos o número de valores em TheString.

A Matriz

A primeira coisa que precisamos é criar o array. Para fazer isso, dividimos TheString considerando o ponto-e-vírgula como separador.

<% Dim TheArray Dim TheString TheString = "01;02;03;04;05" TheArray = split(TheString, ";") %>
 

Em seguida, precisamos atribuir os itens na matriz a variáveis dinâmicas. Lembre-se de que não sabemos quantos itens estão armazenados no array e, portanto, não sabemos quantas variáveis iremos criar.

Itens e Variáveis

Usamos um For ... Next para percorrer todos os itens da matriz. Ao mesmo tempo, para o propósito deste exemplo, estamos mostrando os valores dos itens com response.write:

<% Dim i i = 1 For each item in TheArray response.write "
Item Value: " & item ' A variável i é usada no próximo bit do código: ' vamos anexar o valor i a um "a" para os nomes das variáveis dinâmicas execute("a" & i & " = item") i = i + 1 Next %>

 

Como você pode ver, o valor de i aumenta cada vez que uma nova variável é criada. Quando o ciclo For ... Next termina, terminamos com i tendo um valor correspondente ao número de itens na matriz mais um. Precisamos nos lembrar disso na próxima etapa.
 

Observe que usamos a função execute para criar as variáveis.
 

Mostrando as Variáveis Dinâmicas
 

Como disse, não sabemos quantas variáveis criamos: depende do número de itens no array. De qualquer forma, podemos percorrer essas variáveis usando uma abordagem semelhante à anterior. O número de variáveis é i menos 1.
 

Em seguida, usamos j para um novo ciclo For ... Next:

<% i = i - 1 Dim j For j = 1 To i response.write "
a" & j & ": " & eval("a" & j) Next %>

 

O código completo irá gerar o seguinte resultado (dado TheString = "01;02;03;04;05"):

Item Value: 01
Item Value: 02
Item Value: 03
Item Value: 04
Item Value: 05
a1: 01
a2: 02
a3: 03
a4: 04
a5: 05

 

Abaixo o Código Completo, sem Comentários

<%
Dim TheArray, TheString, i, j

TheString = "01;02;03;04;05"
TheArray = split(TheString, ";")

i = 1
For each item in TheArray
                   response.write "
Item Value: " & item
                   execute("a" & i & " = item")
                   i = i + 1
Next

i = i - 1
For j = 1 To i
                   response.write "
a" & j & ": " & eval("a" & j)
Next

%>



whatsapp instagram