Enregistrement et récupération de deux données dans un fichier .txt [Résolu]

Messages postés
28
Date d'inscription
vendredi 28 mars 2008
Statut
Membre
Dernière intervention
29 mars 2009
- - Dernière réponse : 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 !!!
Afficher la suite 

8 réponses

Meilleure réponse
Messages postés
219
Date d'inscription
lundi 21 novembre 2005
Statut
Membre
Dernière intervention
20 décembre 2010
3
Merci
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

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 198 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cnt
Messages postés
219
Date d'inscription
lundi 21 novembre 2005
Statut
Membre
Dernière intervention
20 décembre 2010
3
Merci
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

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 198 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cnt
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
62
0
Merci
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)
Commenter la réponse de cs_Jack
Messages postés
28
Date d'inscription
vendredi 28 mars 2008
Statut
Membre
Dernière intervention
29 mars 2009
0
Merci
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 ??
 
Commenter la réponse de Splif62
Messages postés
219
Date d'inscription
lundi 21 novembre 2005
Statut
Membre
Dernière intervention
20 décembre 2010
0
Merci
salut l'ami
la réécriture du fichier écrase les données précédentes, donc pas de souci
voila

CNTJC
Commenter la réponse de cnt
Messages postés
28
Date d'inscription
vendredi 28 mars 2008
Statut
Membre
Dernière intervention
29 mars 2009
0
Merci
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 ... ???  
Commenter la réponse de Splif62
Messages postés
28
Date d'inscription
vendredi 28 mars 2008
Statut
Membre
Dernière intervention
29 mars 2009
0
Merci
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 ...
Commenter la réponse de Splif62
Messages postés
28
Date d'inscription
vendredi 28 mars 2008
Statut
Membre
Dernière intervention
29 mars 2009
0
Merci
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 !!
Commenter la réponse de Splif62