Probleme de répétitive

Résolu
gazghul33 Messages postés 18 Date d'inscription lundi 9 avril 2007 Statut Membre Dernière intervention 22 avril 2007 - 11 avril 2007 à 23:08
cs_lermite222 Messages postés 492 Date d'inscription jeudi 5 avril 2007 Statut Membre Dernière intervention 2 juillet 2012 - 12 avril 2007 à 18:00
J'ai un problème avec du code (partie en rouge), il reste faux quoi qu'il arrive.

Do
n = n + 1
MsgBox Picture1(Index + n).Picture = Picture1(Index).PictureLoop Until (Picture1(Index + n).Picture Picture1(Index).Picture) Or n 3

merci

19 réponses

Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
12 avril 2007 à 00:10
le test du handle, parce c'est la propriété par défaut sera toujours faux
bon supposons qu'il y a 4 images (index 1 à 4)
et qu'il n'y a qu'un nombre limité d'images à charger

    Dim i As Integer
    Dim x As Integer
    Dim Tableau(4) As String

' on met le nom des images à charger dans un tableau
    Tableau(1) = "C:\IMAGES\01.bmp"
    Tableau(2) = "C:\IMAGES\02.bmp"
    Tableau(3) = "C:\IMAGES\03.bmp"
    Tableau(4) = "C:\IMAGES\04.bmp"
   
' on charge les images au hasard
    Randomize
    For i = 1 To 4
        x = Int(Rnd * 4) + 1
        Picture1(i).Tag = x
        Picture1(i).Picture = LoadPicture(Tableau(x))
        Next
   
' et on teste si 2 images successives sont identiques
    For i = 1 To 3
        If Picture1(i).Tag = Picture1(i + 1).Tag Then
           MsgBox i & " et " & i + 1
           End If
        Next

Daniel
3
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
11 avril 2007 à 23:19
même si c'est les même images le handle ne sera pas identique
sauf si les deux pictures sont vides, dans ce cas ce sera zéro
    MsgBox Picture1(1).Picture
    MsgBox Picture1(1).Picture.Handle

Daniel
0
gazghul33 Messages postés 18 Date d'inscription lundi 9 avril 2007 Statut Membre Dernière intervention 22 avril 2007
11 avril 2007 à 23:27
C'est vrai mais alors comment peut remédier à ce problème?
0
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
11 avril 2007 à 23:28
Bonsoir,
Qu' est ce qui reste faux ,
et qu' est ce qui est censé changer ?
A quoi sert ton MsgBox ?
et qu' est ce que ta boucle est supposé faire ?

-
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
11 avril 2007 à 23:33
il doit tester si 2 pictures ont des images identiques parmis les 3
donc 1 avec 2, 2 avec 3, ... et ben c'est fini
c'est au moment où tu charges tes images que tu sais lesquelles tu as mises
sinon après c'est difficile, à moins de tester pixel par pixel

Daniel
0
gazghul33 Messages postés 18 Date d'inscription lundi 9 avril 2007 Statut Membre Dernière intervention 22 avril 2007
11 avril 2007 à 23:35
C'est pas jouable avec la proprieté Index?
0
cs_lermite222 Messages postés 492 Date d'inscription jeudi 5 avril 2007 Statut Membre Dernière intervention 2 juillet 2012 4
11 avril 2007 à 23:35
Bonjour
Je ne vois pas ce que tu veux faire avec ta routine, de plus j'ai eu beau retourner l'aide pour MsgBox, je n'ai pas trouvé qu'il pouvait affiché des images.
ou alors, c'est le nom de l'image que tu veux affiché ?
Plus d'explication Svp
Cordialement
louis
0
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
11 avril 2007 à 23:37
ne commences jamais une boucle avec Do sans petre certain que
ton code s' éxécutera au moins une fois.
Commences plutôt par la condition Do While n<3

-

-
0
gazghul33 Messages postés 18 Date d'inscription lundi 9 avril 2007 Statut Membre Dernière intervention 22 avril 2007
11 avril 2007 à 23:37
le msgbox sert a verifier si la condition est vrai ou fausse. (je pense...)
0
cs_lermite222 Messages postés 492 Date d'inscription jeudi 5 avril 2007 Statut Membre Dernière intervention 2 juillet 2012 4
11 avril 2007 à 23:39
pas en le libellant comme il le fait
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
11 avril 2007 à 23:40
la condition sera toujours fausse puisqu'ici on ne teste que le Handle de l'image
et non pas l'image elle-même bien sûr


au moment du chargement met le nom de l'image (ou le chemin complet) dans la propriété Tag


ensuite il reste plus qu'à tester le Tag

Daniel
0
gazghul33 Messages postés 18 Date d'inscription lundi 9 avril 2007 Statut Membre Dernière intervention 22 avril 2007
11 avril 2007 à 23:42
Oulah...Tu sais je suis un novice il va falloir ke tu m en dise un peu plus .stp
0
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
11 avril 2007 à 23:43
je pense que ça ira avec ça :
Do While n<=3
If (Picture1(Index + n).Picture = Picture1(Index).Picture) Then
    MsgBox index & " / " n
    'tu sauras alors de quelles images il s' agit
    Exit Do
End If
Loop

-

-
0
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
11 avril 2007 à 23:44
pardon il faut ajouter
n=n+1 dans la boucle
-

-
0
cs_lermite222 Messages postés 492 Date d'inscription jeudi 5 avril 2007 Statut Membre Dernière intervention 2 juillet 2012 4
11 avril 2007 à 23:46
je vient de m'apercevoir que c'est gazghul qui dit (je pense)


Alors si toi-même tu ne sais pas ce que sa veux vaire, comment les autres peuvent-il répondre


Bonsoir


Terminer


 
0
gazghul33 Messages postés 18 Date d'inscription lundi 9 avril 2007 Statut Membre Dernière intervention 22 avril 2007
11 avril 2007 à 23:54
C'est bizarre avec ce que tu ma dis n=4
0
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
12 avril 2007 à 00:03
le problème est dans l' index qui ne change pas
autre code :
n=1


Do While n< 3
   If (Picture1(Index + n).Picture = Picture1(Index+n+1).Picture) Then Exit Do
   n=n+1
Loop


MsgBox n


si c' est 1 => 1 avec 2
si c' est 2 => 2 avec 3
si n=3 alors aucune correspondance

-

-
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
12 avril 2007 à 09:24
Salut,
Je veux juste rebondir sur un truc (même si le problème est résolu)
> [auteurdetail.aspx?ID= 1025868 lermite222] : "Je ne vois pas ce que tu veux faire avec ta routine, de plus j'ai eu
beau retourner l'aide pour MsgBox, je n'ai pas trouvé qu'il pouvait
affiché des images." tu pourrais testé les différentes lignes avant de dire que MSGBOX doit afficher des Images et que ce

Lorsque tu écris:
MsgBox Picture1(Index + n).Picture = Picture1(Index).Picture  le MSgbox montrera Vrai ou Faux
Lorsque tu écris:
MsgBox Picture1(Index + n).Picture  MSgbox Affichera le Handle de la Picture du PictureBox
Ce qui est équivalent à  MsgBox Picture1(Index + n).Picture.Handle

@+: =89254 Ju£i?n
Pensez: Réponse acceptée
PS: si je me suis trompé dans ce que je dis, MERCI de me corriger
0
cs_lermite222 Messages postés 492 Date d'inscription jeudi 5 avril 2007 Statut Membre Dernière intervention 2 juillet 2012 4
12 avril 2007 à 18:00
Réponse à jrivet


Bon.. si je me suis tromper merci de me corriger. et excuser moi.

Mais c'est plutôt mon explication qui prète à confusion, je ne vois toujours pas à quoi sert sont MSGBOX, si ce n'est que de créer un point d'arrèt
de plus msgbox comme écrit ne retourne rien !!!
Désolé de te contredire mais j'ai tester, avec

check=MsgBox (Picture1(0).Picture = Picture1(Index).Picture)

et check est toujours Faux
Ce qui vient bien à dire que l'approche faite n'est pas la bonne
debbug
print Picture1(0).Picture=-301654024
print Picture1(1).Picture=-1459281872
Suggétion

Private Sub Command1_Click()
Dim check As Boolean
Static n As Integer
n = n + 1
If n > 2 Then n = 1
    If Picture1(0).Point(100, 100) = Picture1(n).Point(100, 100) Then
        check = True
    End If
    MsgBox check
End Sub

cela fonctionne
Si je me trompe encore, merci de me corriger.
cordialement
louis
0
Rejoignez-nous