USUÁRIO:      SENHA:        SALVAR LOGIN ?    Adicione o VBWEB na sua lista de favoritos   Fale conosco 

 

  Fórum

  Visual Basic
Voltar
Autor Assunto:  Pares de Imagens
Gustavo
não registrado
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
     
Juan Carlos R.A
Pontos: 2843
MACEIO
AL - BRASIL
ENUNCIADA !
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
   
Gustavo
não registrado
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?
     
Gustavo
não registrado
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.
     
Juan Carlos R.A
Pontos: 2843
MACEIO
AL - BRASIL
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
Pontos: 2843 Pontos: 2843
SÃO VICENTE
SP - BRASIL
Postada em 11/10/2010 18:44 hs            
eu tenho só uma duvida o que é MatrizImagens um objeto

     
Página(s): 1/2      PRÓXIMA »


Seu Nome:

Seu eMail:

ALTERAR PARA MODO HTML
Mensagem:

[:)] = 
[:P] = 
[:(] = 
[;)] = 

HTML DESLIGADO

     
 VOLTAR

  



CyberWEB Network Ltda.    © Copyright 2000-2025   -   Todos os direitos reservados.
Powered by HostingZone - A melhor hospedagem para seu site
Topo da página