|
Postada em 11/10/2010 10:05 hs
Caros colegas, Estou com muita dificuldade na execuação desta função.... Em VBA ele roda perfeitamente, portanto em VB trava tudo.. Eu preciso carregar uma matriz de imagens sendo que ela vai duplicar as imagens
Carregar no form 28 Imagens sendo 14 pares iguais.
A função que uso chegou ate rodar mas as vezes trava
Alguém saberia me dizer onde esta o erro?
Na verdade quando entra no While não sai mais dali..
Function ParesImagens() Dim Contador As Double Dim NumeroImagen As Double Dim IMG1 As Double Dim MatrizPares(28) As String ' ReDim MatrizPares(24) As String Dim IMG2 As Double Dim ctlImagen As Control Dim ctrForm As Form Dim ContadorImagen As Double Randomize For Contador = 1 To 14 NumeroImagen = Int(Rnd * intContadorImagens) While MatrizImagens(NumeroImagen) = "0" NumeroImagen = Int(Rnd * intContadorImagens) Wend IMG1 = Int(Rnd * 14) While MatrizPares(IMG1) <> "" IMG1 = Int(Rnd * 14) Wend MatrizPares(IMG1) = MatrizImagens(NumeroImagen) IMG1 = Int(Rnd * 14) While MatrizPares(IMG2) <> "" IMG2 = Int(Rnd * 14) Wend MatrizPares(IMG2) = MatrizImagens(NumeroImagen) MatrizImagens(NumeroImagen) = "0" Next
ContadorImagen = 0 For Each ctlImagen In Me If Left(ctlImagen.Name, 8) = "ImgPares" Then ctlImagen.Tag = MatrizPares(ContadorImagen) ContadorImagen = ContadorImagen + 1 ctlImagen.Picture = LoadPicture(ctlImagen.Tag) End If Next ctlImagen End Function
|
|
|
|
|
Postada em 11/10/2010 11:58 hs
Amigo o problema é que sempre que img1 e img2 <>"" ele não vai sair desse while. pq int(rnd*14) nunca vai dar vazio.
While MatrizPares(IMG1) <> "" IMG1 = Int(Rnd * 14) Wend MatrizPares(IMG1) = MatrizImagens(NumeroImagen) IMG1 = Int(Rnd * 14) While MatrizPares(IMG2) <> "" IMG2 = Int(Rnd * 14) Wend
|
|
|
|
Postada em 11/10/2010 17:29 hs
Juan obrigado pelo retorno!
mas o problema persiste quando se tem 2 Whiles
Em VBA roda tranquilo, já no VB ele fica no loop eterno!
Vc teria outra solução?
|
|
|
|
Postada em 11/10/2010 17:37 hs
Lembrando apenas que MatrizImagens(NumeroImagen) e o caminho da imagem na pasta e por isso caso seja vazio faz o int(rnd*14) ate que esta condição seja verdadeira.
Pares(IMG1) irá receber um valor sorteado na matriz e a Pares(IMG2) outro valor, no entanto ambos tem o mesmo valor em MatrizImagens(NumeroImagen).
Por isso que forma os pares em posições diferentes com a mesma imagem.
|
|
|
|
Postada em 11/10/2010 17:56 hs
Cara em que While esta travando? lembrando que vai sair de cada while: no caso 1: quando seja diferente de 0 (qualquer outro valor vai sair) no caso 2 e 3 quando seja igual a Int(Rnd * 14) (qualquer outro resultado nao vai sair)
é so esse codigo? ou tem mais, pq colei no vb e da erro aqui While MatrizImagens(NumeroImagen) = "0" sub ou functiuon not defined
|
|
|
Treze
|
SÃO VICENTE SP - BRASIL
|
|
Postada em 11/10/2010 18:44 hs
eu tenho só uma duvida o que é MatrizImagens um objeto
|
|
|