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

cs_FuSe Messages postés 18 Date d'inscription samedi 28 décembre 2002 Statut Membre Dernière intervention 10 juillet 2003 - 29 déc. 2002 à 23:48
cs_FuSe Messages postés 18 Date d'inscription samedi 28 décembre 2002 Statut Membre Dernière intervention 10 juillet 2003 - 30 déc. 2002 à 12:25
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

cs_rene38 Messages postés 1858 Date d'inscription samedi 29 juin 2002 Statut Membre Dernière intervention 17 octobre 2013 11
30 déc. 2002 à 02:05
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
SupraDolph Messages postés 196 Date d'inscription samedi 12 janvier 2002 Statut Membre Dernière intervention 1 septembre 2008 1
30 déc. 2002 à 02:15
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
cs_rene38 Messages postés 1858 Date d'inscription samedi 29 juin 2002 Statut Membre Dernière intervention 17 octobre 2013 11
30 déc. 2002 à 02:24
-------------------------------
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
cs_rene38 Messages postés 1858 Date d'inscription samedi 29 juin 2002 Statut Membre Dernière intervention 17 octobre 2013 11
30 déc. 2002 à 02:31
"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

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

Posez votre question
SupraDolph Messages postés 196 Date d'inscription samedi 12 janvier 2002 Statut Membre Dernière intervention 1 septembre 2008 1
30 déc. 2002 à 03:28
Merçi rene38 tu vien de m'apprende quelque chose.
Mais bon je ne comprend toujour pas pouquoi elle lui revoi toujours 0
0
cs_FuSe Messages postés 18 Date d'inscription samedi 28 décembre 2002 Statut Membre Dernière intervention 10 juillet 2003
30 déc. 2002 à 12:25
MERCI BEAUCOUP :) SupraDolph et Rene38
0