lordfinalff
Messages postés84Date d'inscriptionvendredi 2 septembre 2005StatutMembreDernière intervention14 décembre 2009
-
12 juil. 2007 à 18:31
lordfinalff
Messages postés84Date d'inscriptionvendredi 2 septembre 2005StatutMembreDernière intervention14 décembre 2009
-
13 juil. 2007 à 09:20
Voici un bout de mon code ( ne faite pas attention au nom du fichier et au point ^^ )
Private Sub timer_faim_Timer()
If compte_faim = 1 Then
If cube_faim5.Visible = True Then
cube_faim5.Visible = False
Open App.Path & "/data/gtu86d48.lord" For Output As #2
Write #2, 100
Close #2
end if
end if
end sub
Mon problème, visual basic ne m'affiche aucune erreur, mais, lorsque je vérifie mon fichier, le nombre 100 n'a pas était écris !
Alors que :
Private Sub command1_click()
Open App.Path & "/data/gtu86d48.lord" For Output As #2
Write #2, 100
Close #2
end sub
la, il écris le nombre 100 dans le fichier !
Pourquoi ?
LORDFINALFF
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 12 juil. 2007 à 19:04
Salut
Si ton instruction fonctionne dans le deuxième exemple et pas dans le premier, c'est que les conditions que tu as mis devant ne sont pas vraies.
Teste donc les valeurs de "compte_faim" et si "cube_faim5" est visible
Mode Debug :
Clique sur ta ligne "If compte_faim ..." et appuie sur la touche F9 : Tu viens d'insérer un point d'arrêt.
Quand ton programme passera par là, il s'arrêtera.
Survole avec ta souris les variables et il t'affichera leur contenu.
F8 pour continuer une seule ligne
F5 pour continuer normalement
L'instruction Write # est obsolète. Elle fonctionne mais insère des " en début et fin de chaine.
Mieux vaut utiliser Print # (lignes entières) et Line Input # pour la relecture
Fais aussi attention que / n'est pas \ dans ton chemin, ça peut causer des soucis (rien à voir avec ton problème)
Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 12 juil. 2007 à 19:07
Bonsoir,
Je dirais (si mon petit doigt ne me mens pas) que l'interval de ton Timer est resté à 0, ou que a propriété Enabled de ton Timer est à False, ou qu'enfin ton Timer ne s'appelle point Sub timer_faim ...
Mais mon autre petit doit appelle mon attention sur la condition :
If compte_faim = 1 Then ....
Ce coquin me fait remarquer qu'on ne voit pas dans ton code si compte_fin est quelquepart, défini de telle sorte que sa valeur est égale à 1 ...
Bon ...
L'un de mes 2 petits doigts a probablement raison !
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 12 juil. 2007 à 19:29
Bon,
C'est l'heure du pastis (j'ai le mien à la main) et donc des choes plus sérieuses.
Nous n'allons pas écouter mes petits doigts et poser un regard sage sur les choses ...
Utiliser un timer pour écrire dans un ficheir de façon permanente serait insensé. C'est d'ailleurs la raison pour laquelle tu te sers d'une variable et n'écris que lorsque sa valeur = 1, n'est-ce pas ?
Observation, alors : la valeur de cette variable ne se met pas à 1 à l'insu de ton appli !
Il te suffit donc, en lieu et place du timer, de lancer une procédure et une fonction d'écriture (la même que celle de ton essai avec un bouton de commande) chaque fois que ton appli vois cette variable passer à 1...
lordfinalff
Messages postés84Date d'inscriptionvendredi 2 septembre 2005StatutMembreDernière intervention14 décembre 2009 13 juil. 2007 à 09:15
Jack, c'est ce que je me suis dit, alors, pour voir si il passé bien par l, j'ai placé un msgbox tout bête apres l'instruction close#2.
L'image disparait bien, le messagebox s'affiche a l'écran, je stop l'application, je vérifie l'interieur du fichier, et rien n'a changé.
J'ai ensuite fait un autre test, j'ai déclaré une variable intnbr, et juste avant d'ouvrir le fichier, j'ai dit que cette variable était égale a 100, ensuite, une fois ceci fait, je lance, j'attend que le cube disparaisse et je vérifie mon fichier. Le nombre 100 a bien était écrit dans le fichier ... c'est pour ca que je sèche :s
LORDFINALFF
Vous n’avez pas trouvé la réponse que vous recherchez ?
lordfinalff
Messages postés84Date d'inscriptionvendredi 2 septembre 2005StatutMembreDernière intervention14 décembre 2009 13 juil. 2007 à 09:20
dsl pour le double post !!
Je vais passer pour le pire des débutants mais bon, j'avais une journée de code dans la tête et avec un oeil neuf j'ai vu le problème =D
c'est bon, tout va bien, j'avais juste une instruction a la fin de ma procédure qui réouvré le fichier écriver la varaible a l'interieur, mais comme la variable n'avais pas était modifier, elle reste a 1, donc le 100 est bien écrit, mais il desuite remplacer par le 1 apres.
Mintenant, je place une instruction qui change tout simplement la variable ( la remet a 100 ) et elle est écrit a la fin du fichier ^^