Enregistrement et récupération de deux données dans un fichier .txt

Résolu
Splif62 Messages postés 28 Date d'inscription vendredi 28 mars 2008 Statut Membre Dernière intervention 29 mars 2009 - 28 mars 2009 à 16:42
cnt Messages postés 219 Date d'inscription lundi 21 novembre 2005 Statut Membre Dernière intervention 20 décembre 2010 - 30 mars 2009 à 00:26
Salut les amis !!
Je dois pour les cours développer une petite application qui doit me permettre l'enregistrement et la récupération de 2 données dans un
fichier texte avec VB6

Je m'explique,
je dois enregistrer dans un fichier .txt nommé "meilleursscores.txt" le nom et le temps mis par le joueur pour réaliser sa partie.
et ensuite les afficher dans 2 listbox différentes. il faut bien sur que les indices correspondent afin d'avoir les bon résultat
affectés au bon nom.

l'une s'appelle nom et l'autre score.
j'y arrive avec une seule mais impossible de le faire avec 2 ...

voici mon code pour l'ajout d'un score ... (mais pas pour nom et scores comme demandé !!!)

Private Sub enregistre(scores As ListBox)
    Open App.Path & "" & "meilleursscores.txt" For Output As 1
    For i = 0 To scores.ListCount - 1
        scores.ListIndex = i
        Print #1, scores.Text
    Next
    Close 1
End Sub

Si quelqu'un sait comment faire ???
Merci d'avance !!!

8 réponses

cnt Messages postés 219 Date d'inscription lundi 21 novembre 2005 Statut Membre Dernière intervention 20 décembre 2010 1
29 mars 2009 à 00:29
Peut être ça, simplement
Private Sub enregistre(scores As ListBox, noms As Listbox )
    Open App.Path & "" & "meilleursscores.txt" For Output As 1
    For i = 0 To scores.ListCount - 1
        scores.ListIndex = i
        noms.ListIndex = i
        Print #1, scores.Text  &  ","  &  noms.Text
    Next
    Close 1
End Sub
3
cnt Messages postés 219 Date d'inscription lundi 21 novembre 2005 Statut Membre Dernière intervention 20 décembre 2010 1
30 mars 2009 à 00:26
Pour sur, que les noms et scores sont en double, il faut lire les données séparément elles sont séparées par une virgule par ligne lue dans le fichier

Private Sub Ouvrescores(noms As ListBox, scores As ListBox)
    Dim LeNom As String, LeScore As Integer
    Open App.Path & "" & "meilleursscores.txt" For Input As 1
        Do Until EOF(1)
            Input #1, LeNom, LeScore ' Lit les données dans deux variables.

            noms.AddItem  LeNom
            scores.AddItem  LeScore
        Loop
    Close 1
End Sub

CNTJC
3
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
28 mars 2009 à 20:41
Salut
Tu tapes "fichier score" dans la case Rechercher parmi les Codes en excluant .Net et tu auras des exemples, suffira d'adapter

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
Splif62 Messages postés 28 Date d'inscription vendredi 28 mars 2008 Statut Membre Dernière intervention 29 mars 2009
29 mars 2009 à 19:14
Ok sa sa fonctionne !!! merci les amis !!!
j'ai un autre soucis (enfin g pas encore cherché il faut dire ...)
Comment faire pour vider le fichier texte avant chaque enregistrement ??
 
0

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

Posez votre question
cnt Messages postés 219 Date d'inscription lundi 21 novembre 2005 Statut Membre Dernière intervention 20 décembre 2010 1
29 mars 2009 à 19:45
salut l'ami
la réécriture du fichier écrase les données précédentes, donc pas de souci
voila

CNTJC
0
Splif62 Messages postés 28 Date d'inscription vendredi 28 mars 2008 Statut Membre Dernière intervention 29 mars 2009
29 mars 2009 à 20:03
Merci de ta réponse CNT !
Je trouve sa bizarre, quand je ferme mon application et que je la relance, lorsque je vais afficher les résultats
ceux ci sont en double ... ???  
0
Splif62 Messages postés 28 Date d'inscription vendredi 28 mars 2008 Statut Membre Dernière intervention 29 mars 2009
29 mars 2009 à 20:22
En fait, avec cette solution j'enregistre le_nom , le_score dans le fichier.
donc dans mon fichier se trouve par exemple :
Jean , 13
alfred , 15
etc ...
Ce que je souhaite faire c'est afficher le nom dans une listbox et le score dans une autre ...
le problème c'est que quand je relance l'application et que je consulte les scores je me retrouve avec sa :
Jean , 13, Jean , 13
alfred , 15, alfred , 15
etc ...

durant toute la partie je peut ouvrir les scores sans probleme mais lorsque je ferme l'application et que je la relance,
tous les scores on été doublés ...

voici les codes d'affichage et de sauvegarde des scores :

affichage :
Private Sub Ouvrescores(noms As ListBox, scores As ListBox)
    Open App.Path & "" & "meilleursscores.txt" For Input As 1
        Do Until EOF(1)
            Line Input #1, strcopy
            noms.AddItem strcopy
            scores.AddItem strcopy
        Loop
    Close 1
End Sub

sauvegarde :
Private Sub enregistre(noms As ListBox, scores As ListBox)
    Open App.Path & "" & "meilleursscores.txt" For Output As 1
    For i = 0 To scores.ListCount - 1
        scores.ListIndex = i
        noms.ListIndex = i
        Print #1, scores.Text & "," & noms.Text
    Next
    Close 1
End Sub

Je ne vois pourtant rien de bizarre ...
0
Splif62 Messages postés 28 Date d'inscription vendredi 28 mars 2008 Statut Membre Dernière intervention 29 mars 2009
29 mars 2009 à 20:37
Mais quel BOULET je fais !!!!

l'érreur vient de là ...

 Line Input #1, strcopy
 noms.AddItem strcopy
 scores.AddItem strcopy

l'application fais simplement ce que je lui demande c'est a dire il affiche les noms et les scores dans chacune des listbox ...

La honte sur moi !!!

Par contre comment faire pour aficher les noms dans une listbox et les scores dans une autre ??

Quelqu'un à une idée ???
Merci d'avance !!
0
Rejoignez-nous