Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

tr374

erro no array

Recommended Posts

Microsoft VBScript runtime error '800a000d'

 

Type mismatch

 

perguntas.asp, line 39

O código abaixo deveria sortear os valores "a","b","c" e "d"

 

mas está parando antes da definição do array (Help!!!!!!)

 

ASP [/tr][tr]<%

valor = 4

ReDim resp(valor)

resp = array("|a|b|c|d") 'Erro aqui (linha 39)

total_exibicao = 3

For i = 0 to total_exibicao

ArrayQuestoes = Split(resp, "|")

Randomize()

QuestaoSorteada = RND() * UBound(ArrayQuestoes)

Response.Write ArrayQuestoes(QuestaoSorteada) & "<br>"

resp = Replace(resp, "|" & ArrayQuestoes(QuestaoSorteada), "")

Next

%>

[/tr]

Compartilhar este post


Link para o post
Compartilhar em outros sites

kra nessa linha tenta substituir:resp = array("|a|b|c|d")porresp = split("|a|b|c|d","|")isso vai te retornar uma array onderesp(0) = ""resp(1) = "a"resp(2) = "b"resp(3) = "c"resp(4) = "d"para te retornar o número de valores dentro desse array você pode utilizar o comando ubound. Ex.response.write uBound(resp)Abraços DanielP.S - É importante lembra que o 1º valor dessa array (resp(0)) terá valor igual a nulo ok?!

Compartilhar este post


Link para o post
Compartilhar em outros sites

olhai pessoal, isso que o Daniel falou de um campo ser = 0 me ferrou.

 

O sript esta funcionando mas não 100% e achei ele feio demais, mas qualquer coisa tai para sujestões:

 

ASP [/tr][tr]<%

resp = "|a|b|c|d"

vezes = 3

For i = 0 to vezes

ArrayQuestoes = Split(resp, "|")

Randomize()

QuestaoSorteada = RND() * UBound(ArrayQuestoes)

if ArrayQuestoes(QuestaoSorteada) <> "" then

Response.Write ArrayQuestoes(QuestaoSorteada) & "<br>"

resp = Replace(resp, "|" & ArrayQuestoes(QuestaoSorteada), "")

else

Randomize()

QuestaoSorteada = RND() * UBound(ArrayQuestoes)

if ArrayQuestoes(QuestaoSorteada) <> "" then

Response.Write ArrayQuestoes(QuestaoSorteada) & "<br>"

resp = Replace(resp, "|" & ArrayQuestoes(QuestaoSorteada), "")

else

Randomize()

QuestaoSorteada = RND() * UBound(ArrayQuestoes)

if ArrayQuestoes(QuestaoSorteada) <> "" then

Response.Write ArrayQuestoes(QuestaoSorteada) & "<br>"

resp = Replace(resp, "|" & ArrayQuestoes(QuestaoSorteada), "")

else

Randomize()

QuestaoSorteada = RND() * UBound(ArrayQuestoes)

if ArrayQuestoes(QuestaoSorteada) <> "" then

Response.Write ArrayQuestoes(QuestaoSorteada) & "<br>"

resp = Replace(resp, "|" & ArrayQuestoes(QuestaoSorteada), "")

else

Randomize()

QuestaoSorteada = RND() * UBound(ArrayQuestoes)

if ArrayQuestoes(QuestaoSorteada) <> "" then

Response.Write ArrayQuestoes(QuestaoSorteada) & "<br>"

resp = Replace(resp, "|" & ArrayQuestoes(QuestaoSorteada), "")

else

Randomize()

QuestaoSorteada = RND() * UBound(ArrayQuestoes)

if ArrayQuestoes(QuestaoSorteada) <> "" then

Response.Write ArrayQuestoes(QuestaoSorteada) & "<br>"

resp = Replace(resp, "|" & ArrayQuestoes(QuestaoSorteada), "")

end if

end if

end if

end if

end if

end if

Next

resp = ""

%>

[/tr]

 

resultado:

d

c

a

b

mas pode ocorrer de aparecer apenas 3 letras.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso é simples de resolver

 

mude For i = 0 to vezes

 

para For i = 1 to vezes

 

mude vezes = 3

 

para vezes = 4

 

Como o array na posição 0 é vazio , voce começa a sortear a partir da posição 1 que tem algum tipo de conteudo.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pois é BigPaul, não funcionou, pois o

ASP [/tr][tr]Randomize()

QuestaoSorteada = RND() * UBound(ArrayQuestoes)

[/tr]
Acabava sorteando o "" (vazio), mas consegui resolver assim:

 

ASP [/tr][tr]<%

resp = "|a|b|c|d"

vezes = 4

For i = 1 to vezes

ArrayQuestoes = Split(resp, "|")

Randomize()

QuestaoSorteada = RND() * UBound(ArrayQuestoes)

if ArrayQuestoes(QuestaoSorteada) <> "" then

Response.Write ArrayQuestoes(QuestaoSorteada) & "<br>"

resp = Replace(resp, "|" & ArrayQuestoes(QuestaoSorteada), "")

else

do while ArrayQuestoes(QuestaoSorteada) = ""

contador=1

contador = contador +1

If contador>100 then

exit do

End If

Randomize()

QuestaoSorteada = RND() * UBound(ArrayQuestoes)

loop

Response.Write ArrayQuestoes(QuestaoSorteada) & "<br>"

resp = Replace(resp, "|" & ArrayQuestoes(QuestaoSorteada), "")

end if

Next

resp = ""

%>

[/tr]

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.