Problème avec l'écriture d'un fichier

lordfinalff Messages postés 84 Date d'inscription vendredi 2 septembre 2005 Statut Membre Dernière intervention 14 décembre 2009 - 12 juil. 2007 à 18:31
lordfinalff Messages postés 84 Date d'inscription vendredi 2 septembre 2005 Statut Membre Dernière intervention 14 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

5 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
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
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
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 !
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
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...

Celà serait plus sage; non ?

Bon appétit .
0
lordfinalff Messages postés 84 Date d'inscription vendredi 2 septembre 2005 Statut Membre Dernière intervention 14 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
0

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

Posez votre question
lordfinalff Messages postés 84 Date d'inscription vendredi 2 septembre 2005 Statut Membre Dernière intervention 14 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 ^^

LORDFINALFF
0
Rejoignez-nous