Pb de vraiables quis'effacent s'en qu'on leur demande leur avis

Signaler
Messages postés
18
Date d'inscription
samedi 28 décembre 2002
Statut
Membre
Dernière intervention
10 juillet 2003
-
Messages postés
18
Date d'inscription
samedi 28 décembre 2002
Statut
Membre
Dernière intervention
10 juillet 2003
-
j'ai un problème, j'attribue des valeurs a une case de tableau et juste après je passe dans une fonction et ensuite la case qui a une valeur est effacée ( elle a une valeur 0). Vous sauriez c'est quoi le pb ?

/*précédent vaut bien entendu une valeur quelconque....
precedent(2, 1) = precedent(1, 1) - 1
precedent(2, 2) = precedent(1, 2)
Call maptouche(precedent(1, 1) - 1, precedent(1, 2))

/* et dès que ça sort de la fonction et bien le precedent 2,2 est égal à 0

/*fonction appellée :

Function maptouche(tirordx As Integer, tirordy As Integer)
Dim ind As Integer
tirordx = tirordx - navire(valcarte, 1, 1)
tirordy = tirordy - navire(valcarte, 1, 2)
bateau( valcarte ).Circle (((tirordx + 1 ) * 300) - 150, (( tirordy + 1 ) * 300) - 150), 150
End Function

ps: le *.circle est gentil mais ça n'affiche plus si on réduit la form, est ce que vous connaissez un autre moyen pour générer un graphisme qui ne s'efface pas pas mais qui se génére facilement ?

Merci beaucoup !!

6 réponses

Messages postés
1858
Date d'inscription
samedi 29 juin 2002
Statut
Membre
Dernière intervention
17 octobre 2013
10
precedent(2, 2) = precedent(1, 2)
Call maptouche(precedent(1, 1) - 1, precedent(1, 2) )

precedent(1, 2) est passé à la fonction par référence
et sa valeur est modifiée dans la fonction par la ligne
tirordy = tirordy - navire(valcarte, 1, 2)

Essaie ceci :

Call maptouche(ByVal precedent(1, 1) - 1, ByVal precedent(1, 2))
0
Messages postés
196
Date d'inscription
samedi 12 janvier 2002
Statut
Membre
Dernière intervention
1 septembre 2008
1
tout d'abord pour ton probleme de cercle, pour qu'il ne s'efface pas , met l'AutoRedraw de ta form sur true
ex : Me.AutoRedraw = True

aprés pour ce qui est de ta variable qui s"efface je ne peut pas t'aider, je ne sais pas comment elle est declarée ... Mais ca ne doit pas venir de ta fonction car tu ne l'utilise pas dedans

bonne chance pour ton prog (si je ne me trompe pas c un jeu de bataille navale )

SupraDolph
0
Messages postés
1858
Date d'inscription
samedi 29 juin 2002
Statut
Membre
Dernière intervention
17 octobre 2013
10
-------------------------------
Réponse au message :
-------------------------------

> precedent(2, 2) = precedent(1, 2)
> Call maptouche(precedent(1, 1) - 1, precedent(1, 2) )
>
> precedent(1, 2) est passé à la fonction par référence
> et sa valeur est modifiée dans la fonction par la ligne
> tirordy = tirordy - navire(valcarte, 1, 2)
>
> Essaie ceci :
>
> Call maptouche(ByVal precedent(1, 1) - 1, ByVal precedent(1, 2))
>
>
>
> -------------------------------
> Réponse au message :
> -------------------------------
>
> > j'ai un problème, j'attribue des valeurs a une case de tableau et juste après je passe dans une fonction et ensuite la case qui a une valeur est effacée ( elle a une valeur 0). Vous sauriez c'est quoi le pb ?
> >
> > /*précédent vaut bien entendu une valeur quelconque....
> > precedent(2, 1) = precedent(1, 1) - 1
> > precedent(2, 2) = precedent(1, 2)
> > Call maptouche(precedent(1, 1) - 1, precedent(1, 2))
> >
> > /* et dès que ça sort de la fonction et bien le precedent 2,2 est égal à 0
> >
> > /*fonction appellée :
> >
> > Function maptouche(tirordx As Integer, tirordy As Integer)
> > Dim ind As Integer
> > tirordx = tirordx - navire(valcarte, 1, 1)
> > tirordy = tirordy - navire(valcarte, 1, 2)
> > bateau( valcarte ).Circle (((tirordx + 1 ) * 300) - 150, (( tirordy + 1 ) * 300) - 150), 150
> > End Function
> >
> >
> >
> > ps: le *.circle est gentil mais ça n'affiche plus si on réduit la form, est ce que vous connaissez un autre moyen pour générer un graphisme qui ne s'efface pas pas mais qui se génére facilement ?
> >
> > Merci beaucoup !!
>
0
Messages postés
1858
Date d'inscription
samedi 29 juin 2002
Statut
Membre
Dernière intervention
17 octobre 2013
10
"ca ne doit pas venir de ta fonction car tu ne l'utilise pas dedans" Eh bien SI !
precedent(2, 2) = precedent(1, 2)
et precedent(1, 2) est le second paramètre passé à la fonction. Dans cette fonction, il s'appelle tirordy.
tirordy est modifié dans la fonction par tirordy = tirordy - navire(valcarte, 1, 2)
et comme la valeur est passée par référence (option par défaut de VB), precedent(1, 2) a changé de valeur au retour de la fonction.
et comme precedent(2, 2) = precedent(1, 2), ....!
0
Messages postés
196
Date d'inscription
samedi 12 janvier 2002
Statut
Membre
Dernière intervention
1 septembre 2008
1
Merçi rene38 tu vien de m'apprende quelque chose.
Mais bon je ne comprend toujour pas pouquoi elle lui revoi toujours 0
0
Messages postés
18
Date d'inscription
samedi 28 décembre 2002
Statut
Membre
Dernière intervention
10 juillet 2003

MERCI BEAUCOUP :) SupraDolph et Rene38
0