Lire une ligne dans un fichier texte

Résolu
onix64 Messages postés 23 Date d'inscription vendredi 7 août 2009 Statut Membre Dernière intervention 7 août 2011 - 17 avril 2010 à 17:56
onix64 Messages postés 23 Date d'inscription vendredi 7 août 2009 Statut Membre Derniè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.

Merci d'avance

2 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
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)
3
onix64 Messages postés 23 Date d'inscription vendredi 7 août 2009 Statut Membre Derniè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.

Merci encore
0
Rejoignez-nous