onix64
Messages postés23Date d'inscriptionvendredi 7 août 2009StatutMembreDernière intervention 7 août 2011
-
17 avril 2010 à 17:56
onix64
Messages postés23Date d'inscriptionvendredi 7 août 2009StatutMembreDernière intervention 7 août 2011
-
18 avril 2010 à 11:35
Bonjour à tous !
Je débute depuis quelques semaines sur Visual Basic 6.0 et j'essaye de faire un petit programme pour débuter. Grâce à ce forum et d'autres j'arrive à me débrouiller mais je bataille avec un petit problème depuis quelques jours, qui pour qqn d'expérimenté, devrait être un jeu d'enfants
En fait j'ai utilisé un CommandButton auquel j'ai attribué le code suivant :
Private Sub cmdvalider_Click()
lblmplayer1.Caption = txtplayer1.Text
lblmplayer2.Caption = txtplayer2.Text
lblmplayer3.Caption = txtplayer3.Text
lblmplayer4.Caption = txtplayer4.Text
Dim qnr As Integer
qnr = FreeFile
Open IIf(Right(App.Path, 1) = "", App.Path, App.Path & "") & "Participants.txt" For Output As #qnr
Print #qnr, lblmplayer1.Caption
Print #qnr, lblmplayer2.Caption
Print #qnr, lblmplayer3.Caption
Print #qnr, lblmplayer4.Caption
Close #qnr
End Sub
En fait je rentre 4 noms (toto, tata, titi, tutu par exemple) dans les Textbox dont le contenu s'inscrit dans les Labels. Ensuite j'ouvre le fichier texte intitulé "Participants.txt" dans lequel j'écris ces 4 noms. Jusque là tout va bien ça marche j'ai donc un fichier texte avec toto, tata, titi, tutu par exemple. Je souhaite maintenant aller chercher le nom inscrit à la 2e ou 3e ligne par exemple pour le mettre dans un Label (intitulé ici Lblnomjoueur2) et c'est là que je bloque. J'ai pensé à ça pour le moment :
Dim qnr As Integer
qnr = FreeFile
Open IIf(Right(App.Path, 1) = "", App.Path, App.Path & "") & "Participants.txt" For Input As #qnr
Line Input #qnr, Ligne2$
Lblnomjoueur2.Caption = Ligne2$
End Sub
La fonction Line Input fonctionne mais me renvoi toujours la 1ere ligne et non la 2e comme je le souhaite dans l'exemple ci-dessus. Même en mettant Ligne3$ ou Ligne4$ j'ai toujours la 1ere qui s'inscrit soit ici toto. J'ai cherché sur le forum mais j'ai du mal à trouver et vu que je débute je rame un peu donc je pose la question dans le forum.
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 17 avril 2010 à 18:16
Salut
Eh oui, comme nous, VB commence à lire la première ligne.
Quand il s'agit d'un fichier texte (*), il n'est pas possible de lui demander de lire directement la Xième ligne.
Il faut donc lire les premières lignes et s'arrêter sur celle qui nous intéresse.
Une simple boucle suffit :
NbLigne = 0
maLigne = 8
Do While Not EOF(qnr)
Line Input #qnr, maVar$
NbLigne = NbLigne + 1
If NbLigne = maLigne Then
Lblnomjoueur2.Caption = maVar$
Exit Do
End If
Loop
Ce simple code se retrouve souvent dans les Codes du site qui parlent de lire des fichiers : Tu n'as pas dû chercher longtemps.
PS : Tu as oublié de faire un Close avant le End Sub
(*) la lecture directe n'est possible que si VB connait la taille d'une ligne (taille unique pour chaque ligne) de ton fichier. Voir fichier "Random access".
Vala
Jack, MVP VB NB : Je ne répondrai pas aux messages privés
Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
onix64
Messages postés23Date d'inscriptionvendredi 7 août 2009StatutMembreDernière intervention 7 août 2011 18 avril 2010 à 11:35
Merci Jack ça marche nikel
J'avais déjà trouvé des codes qui ressemblaient à celui-là mais je n'avais pas réussi à les utiliser. Comme d'habitude c'était très simple mais ça on le voit que quand ça marche.