IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Ecraser un fichier texte avec les nouvelles données


Sujet :

VB.NET

  1. #1
    Membre expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 58
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Points : 3 628
    Points
    3 628
    Billets dans le blog
    8
    Par défaut Ecraser un fichier texte avec les nouvelles données
    Bonjour
    Dans le cadre de mes meilleurs scores de mon jeu de Yam's, me reste un dernier bug :

    Cette procédure me permet de sauvegarder mes meilleurs scores.
    Mais, disons une fois sur 4, je me prends une exception dans la tête.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
        'écrase l'ancien fichier texte avec la nouvelle collection
        Private Sub saveScores(ByVal nomJeu As String)
            Dim ecraseFlux As StreamWriter
            Dim monJoueur As Joueur
            If nomJeu = "bestYams.txt" Then
                ecraseFlux = File.CreateText(nomJeu)
                For Each monJoueur In joueursYams
                    ecraseFlux.WriteLine(monJoueur.Score & ";" & monJoueur.Pseudo)
                Next
                ecraseFlux.Close()
            ElseIf nomJeu = "bestYahtzee.txt" Then
                ecraseFlux = File.CreateText(nomJeu)
                For Each monJoueur In joueursYahtzee
                    ecraseFlux.WriteLine(monJoueur.Score & ";" & monJoueur.Pseudo)
                Next
                ecraseFlux.Close()
            End If
     
        End Sub
    L'exception est la suivante...
    Le processus ne peut pas accéder au fichier 'C:\Documents and Settings\Sylvie\Mes documents\Visual Studio 2008\Projects\yams\yams\bin\Debug\bestYahtzee.txt', car il est en cours d'utilisation par un autre processus.
    et correspond à la ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ecraseFlux=File.CreateText(nomJeu)
    Merci d'avance de vos lumières...
    Je voulais écraser le fichier texte avec le nouveau, il me semblait pourtant avoir bien fermé le fichier que j'ouvrais en mode lecture auparavant, avant de le détruire... Je ne comprends pas...
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  2. #2
    Membre éprouvé Avatar de yonpo
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2010
    Messages
    617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2010
    Messages : 617
    Points : 947
    Points
    947
    Par défaut
    Salut,

    Essaye en instanciant la classe StreamWriter avec New.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    'écrase l'ancien fichier texte avec la nouvelle collection
        Private Sub saveScores(ByVal nomJeu As String)
     
            Dim monJoueur As Joueur
            If nomJeu = "bestYams.txt" Then
                Dim ecraseFlux As New StreamWriter(nomJeu)
                For Each monJoueur In joueursYams
                    ecraseFlux.WriteLine(monJoueur.Score & ";" & monJoueur.Pseudo)
                Next
                ecraseFlux.Close()
            ElseIf nomJeu = "bestYahtzee.txt" Then
                Dim ecraseFlux As New StreamWriter(nomJeu)
                For Each monJoueur In joueursYahtzee
                    ecraseFlux.WriteLine(monJoueur.Score & ";" & monJoueur.Pseudo)
                Next
                ecraseFlux.Close()
            End If
     
        End Sub

  3. #3
    Membre émérite Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Points : 2 528
    Points
    2 528
    Par défaut
    Y'a un petit truc qui m'arrivais avec ce genre d'objet qu'il faut "absolument" fermer,

    C'est quand il y a une exception... A ce moment le code ne passe plus dans le Close().

    C'est pourquoi je conseil de faire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Try
     
        'TonCode
     
    Catch
         MonObjet.Close()
    End Try
    Tu n'as pas l'air d'utiliser de try catch pour le moment... Dans tous les cas si c'est bien une exception qui t'arrive, je te conseil également de te les faire afficher:
    Deboguer->Exception->Cocher les 3 premier checkboxs

    Du coup quand il y a une exception (même mineur), il s'arrête dessus.
    L'avenir appartient à ceux... dont les ouvriers se lèvent tôt. (Coluche)

  4. #4
    Membre expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 58
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Points : 3 628
    Points
    3 628
    Billets dans le blog
    8
    Par défaut
    Merci de vos réponses.
    J'ai fait un mix, puis testé, mais ça ne marche pas... Ni séparément, ni ensemble. Ca continue à m'envoyer la même exception plus souvent qu'à son tour.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
        'écrase l'ancien fichier texte avec la nouvelle collection
        Private Sub saveScores(ByVal nomJeu As String)
     
            Dim monJoueur As Joueur
            If nomJeu = "bestYams.txt" Then
                Dim ecraseFlux As New StreamWriter(nomJeu)
                Try
                    For Each monJoueur In joueursYams
                        ecraseFlux.WriteLine(monJoueur.Score & ";" & monJoueur.Pseudo)
                    Next
                Catch
                    ecraseFlux.Close()
                End Try
            ElseIf nomJeu = "bestYahtzee.txt" Then
                Dim ecraseFlux As New StreamWriter(nomJeu)
                Try
                    For Each monJoueur In joueursYahtzee
                        ecraseFlux.WriteLine(monJoueur.Score & ";" & monJoueur.Pseudo)
                    Next
                Catch
                    ecraseFlux.Close()
                End Try
            End If
     
        End Sub
    Ah pour info, je vous mets le code de la fonction de lecture du fichier qui se déroule avant :
    Dois-je également sécuriser avec un try and catch ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
       'ouvre le fichier texte et construit la collection de x joueurs en fonction du jeu
        Private Sub chargeScores(ByVal nomJeu As String)
     
            Dim litFlux As New StreamReader(nomJeu)
            Dim ligne As String
            Dim elem() As String
            File.OpenRead(nomJeu)
     
            Do Until litFlux.Peek = -1
                Dim monJoueur As New Joueur
                ligne = litFlux.ReadLine()
                elem = Split(ligne, ";")
                monJoueur.Score = elem(0)
                monJoueur.Pseudo = elem(1)
                If nomJeu = "bestYams.txt" Then
                    joueursYams.Add(monJoueur)
                Else if nomJeu = "bestYahtzee.txt" then
                    joueursYahtzee.Add(monJoueur)
                End If
     
            Loop
            litFlux.Close()
        End Sub
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  5. #5
    Membre expérimenté
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 103
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 103
    Points : 1 561
    Points
    1 561
    Par défaut
    et les clauses Using dans le code ...

    l'intéret de la clause using c'est qu'on instancie l'objet quand on déclare la clause, puis celui ci reste instancié pendant tout le bloc qui suit, mais dès qu'on sort du bloc using, et ce quelqu'en soit la raison... (return, exception...) l'objet est libéré.
    C'est une autre façon d'appréhender la programmation propre sans pour autant faire des bloc de try catch gros comme des usines à gaz et imbriqués.

    De façon général il est conseillé d'utiliser ces clauses sur tout objet implantant l'interface IDisposable, surtout quand l'objet en question manipule des ressources non managées.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
        'écrase l'ancien fichier texte avec la nouvelle collection
        Private Sub saveScores(ByVal nomJeu As String)
     
            Dim monJoueur As Joueur
     
     
            If nomJeu = "bestYams.txt" Then
                Using ecraseFlux As New StreamWriter(nomJeu)
     
                    For Each monJoueur In joueursYams
                        ecraseFlux.WriteLine(monJoueur.Score & ";" & monJoueur.Pseudo)
                    Next
     
                End Using
            ElseIf nomJeu = "bestYahtzee.txt" Then
                Using ecraseFlux As New StreamWriter(nomJeu)
                    For Each monJoueur In joueursYahtzee
                        ecraseFlux.WriteLine(monJoueur.Score & ";" & monJoueur.Pseudo)
                    Next
                End Using
            End If
     
        End Sub
    En fait cette écriture n'empêche pas l'exception, et dans le cas où celle-ci serait catché à l'étage inférieur dans la pile d'exécution, on s'assure que l'objet instancié est toujours libéré en appelant automatiquement son membre Dispose() qui sur un StreamWriter en plus de fermer le fichier, libère la ressource système sous-jacente.

    Pour ton problème il peut y avoir 2 cas qui produise cela. Soit ton système n'est pas heureux parce que la ressource sous jacente n'a pas été précédemment libérée (fermée ne signifie pas libérée), soit parce que tu as plusieurs threads qui se parasites.

    En regardant ta fonction de lecture j'ai vu quelque chose qui me fait sauter au plafond aussi au passage !!!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
            Dim litFlux As New StreamReader(nomJeu)
            Dim ligne As String
            Dim elem() As String
            File.OpenRead(nomJeu)

  6. #6
    Membre émérite Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Points : 2 528
    Points
    2 528
    Par défaut
    Citation Envoyé par Dendrite Voir le message
    Merci de vos réponses.
    J'ai fait un mix, puis testé, mais ça ne marche pas... Ni séparément, ni ensemble. Ca continue à m'envoyer la même exception plus souvent qu'à son tour.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
        'écrase l'ancien fichier texte avec la nouvelle collection
        Private Sub saveScores(ByVal nomJeu As String)
     
            Dim monJoueur As Joueur
            If nomJeu = "bestYams.txt" Then
                Dim ecraseFlux As New StreamWriter(nomJeu)
                Try
                    For Each monJoueur In joueursYams
                        ecraseFlux.WriteLine(monJoueur.Score & ";" & monJoueur.Pseudo)
                    Next
                Catch
                    ecraseFlux.Close()
                End Try
            ElseIf nomJeu = "bestYahtzee.txt" Then
                Dim ecraseFlux As New StreamWriter(nomJeu)
                Try
                    For Each monJoueur In joueursYahtzee
                        ecraseFlux.WriteLine(monJoueur.Score & ";" & monJoueur.Pseudo)
                    Next
                Catch
                    ecraseFlux.Close()
                End Try
            End If
     
        End Sub
    Ah pour info, je vous mets le code de la fonction de lecture du fichier qui se déroule avant :
    Dois-je également sécuriser avec un try and catch ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
       'ouvre le fichier texte et construit la collection de x joueurs en fonction du jeu
        Private Sub chargeScores(ByVal nomJeu As String)
     
            Dim litFlux As New StreamReader(nomJeu)
            Dim ligne As String
            Dim elem() As String
            File.OpenRead(nomJeu)
     
            Do Until litFlux.Peek = -1
                Dim monJoueur As New Joueur
                ligne = litFlux.ReadLine()
                elem = Split(ligne, ";")
                monJoueur.Score = elem(0)
                monJoueur.Pseudo = elem(1)
                If nomJeu = "bestYams.txt" Then
                    joueursYams.Add(monJoueur)
                Else if nomJeu = "bestYahtzee.txt" then
                    joueursYahtzee.Add(monJoueur)
                End If
     
            Loop
            litFlux.Close()
        End Sub

    Heu... C'est pas tout à fait ce que je voulais dire...

    Parce que la d'après ce code il n'arrivera pas a fermer le fichier a moins qu'il y ai une exception.... L'idée (a la lecture comme a l'écriture):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Try
     
       MonFichier.open()
       'autrecode
       MonFichier.Close()
     
    Catch
       MonFichier.Close()
    EndTry
    Comme ca si il y a une erreur dans: 'autrecode, il fermera le fichier dans le catch.... si il n'y a pas d'erreur, il le fermera normalement.

    Car si il n'y a pas d'exception, il ne rentre pas dans le catch.
    L'avenir appartient à ceux... dont les ouvriers se lèvent tôt. (Coluche)

  7. #7
    Membre chevronné
    Avatar de Sehnsucht
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2008
    Messages
    847
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Octobre 2008
    Messages : 847
    Points : 2 209
    Points
    2 209
    Par défaut
    @mactwist69

    Finally c'est pas mal non plus
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Try
       MonFichier.Open()
       'autrecode
    Catch ex As Exception
       'gestion erreur
    Finally
        MonFichier.Close()
    End Try
    même si dans ce cas je recommanderais plutôt le Using comme cinemania...

    Cordialement !
    Nous sommes tous plus ou moins geek : ce qui est inutile nous est parfaitement indispensable ( © Celira )
    À quelle heure dormez-vous ?
    Censément, quelqu'un de sensé est censé s'exprimer sensément.

  8. #8
    Membre émérite Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Points : 2 528
    Points
    2 528
    Par défaut
    Oui, le finally est mieux adapter pour ce cas... je souhaitais simplement remettre mon conseil dans le bon ordre.

    Je connaissais pas l'utilité du Using comme cela (libéré l'espace)... Mais c'est vrai que j'ai l'habitude d'essayer de gérer les erreurs...
    L'avenir appartient à ceux... dont les ouvriers se lèvent tôt. (Coluche)

  9. #9
    Membre expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 58
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Points : 3 628
    Points
    3 628
    Billets dans le blog
    8
    Par défaut
    A cinémania

    Pour ton problème il peut y avoir 2 cas qui produise cela. Soit ton système n'est pas heureux parce que la ressource sous jacente n'a pas été précédemment libérée (fermée ne signifie pas libérée), soit parce que tu as plusieurs threads qui se parasites.
    et quel est le code pour libérer ?
    En regardant ta fonction de lecture j'ai vu quelque chose qui me fait sauter au plafond aussi au passage !!!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
            Dim litFlux As New StreamReader(nomJeu)
            Dim ligne As String
            Dim elem() As String
            File.OpenRead(nomJeu)
    Peux-tu me dire ce qui est aberrant ?

    J'ai pris ces codes dans divers tutos, en essayant de les adapter à ma problématique, ce qui explique encore une fois leurs côtés laborieux... Je n'aurais jamais pensé qu'une sauvegarde de dix noms sur deux fichiers texte puisse être à ce point laborieuse en VB.

    Vraiment, ce projet ne m'a pas rendu vb.net très sympathique. La simplicité semble proscrite ?

    J'ai fait un peu de PHP, de C, de java... j'ai toujours trouvé une certaine cohérence... Tandis que là... C'est une usine à gaz. M'enfin, ce n'est pas le sujet du fil, et je manque sans doute de recul...
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  10. #10
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 314
    Points
    13 314
    Par défaut
    Citation Envoyé par Dendrite Voir le message
    Peux-tu me dire ce qui est aberrant ?
    Ouvrir un StreamReader puis un Stream via un File.OpenRead.

    Aucun interêt d'ouvrir le même fichier deux fois avec deux méthodes différentes.

    Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça...


    Une réponse vous a aidé ? utiliser le bouton

    "L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel

  11. #11
    Membre expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 58
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Points : 3 628
    Points
    3 628
    Billets dans le blog
    8
    Par défaut
    Et du coup quel est le bon code ? (j'ai quand même trouvé ça dans un tuto... )

    C'est sans doute l'origine de mon conflit.
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  12. #12
    Membre éprouvé Avatar de yonpo
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2010
    Messages
    617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2010
    Messages : 617
    Points : 947
    Points
    947
    Par défaut
    j'ai quand même trouvé ça dans un tuto...
    Si tu es perdu regarde ici, c'est très bien expliqué (comme tout le cours au passage).

    Comme sous entendu dans mon premier poste, il y a deux méthodes pour utiliser les "Stream": soit en instanciant avec la classe StreamWriter et avec New, ou soit avec la Classe File.

  13. #13
    Membre expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 58
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Points : 3 628
    Points
    3 628
    Billets dans le blog
    8
    Par défaut
    Doh, c'était bien ça l'erreur.
    Je n'avais pas compris que les deux classes s'excluaient, je croyais qu'elles se complétaient.
    A l'arrivée, trop de béquilles m'empêchaient de marcher.

    Merci bien pour toutes vos réponses.
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  14. #14
    Membre expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 58
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Points : 3 628
    Points
    3 628
    Billets dans le blog
    8
    Par défaut
    Une dernière question tout de même.
    J'ai repris finalement le code proposé par cinemania.
    C'est un oubli de ne pas avoir mis ecraseFlux.close() avant la fin de chaque using, ou bien ça ne s'emploie pas dans ce contexte ? Pardon hein, c'est pas encore limpide pour moi.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
        'écrase l'ancien fichier texte avec la nouvelle collection
        Private Sub saveScores(ByVal nomJeu As String)
     
            Dim monJoueur As Joueur
     
     
            If nomJeu = "bestYams.txt" Then
                Using ecraseFlux As New StreamWriter(nomJeu)
     
                    For Each monJoueur In joueursYams
                        ecraseFlux.WriteLine(monJoueur.Score & ";" & monJoueur.Pseudo)
                    Next
     
                End Using
            ElseIf nomJeu = "bestYahtzee.txt" Then
                Using ecraseFlux As New StreamWriter(nomJeu)
                    For Each monJoueur In joueursYahtzee
                        ecraseFlux.WriteLine(monJoueur.Score & ";" & monJoueur.Pseudo)
                    Next
                End Using
            End If
     
        End Sub
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  15. #15
    Membre éprouvé Avatar de yonpo
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2010
    Messages
    617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2010
    Messages : 617
    Points : 947
    Points
    947
    Par défaut
    Citation Envoyé par cinemania Voir le message
    l'intéret de la clause using c'est qu'on instancie l'objet quand on déclare la clause, puis celui ci reste instancié pendant tout le bloc qui suit, mais dès qu'on sort du bloc using, et ce quelqu'en soit la raison... (return, exception...) l'objet est libéré.
    D'après ce qui est expliqué, ce n'est pas un oublie.

  16. #16
    Membre expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 58
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Points : 3 628
    Points
    3 628
    Billets dans le blog
    8
    Par défaut
    Merci. Je fais un peu trop de choses à la fois en ce moment, je vous fais répéter, pardon...
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 18
    Dernier message: 17/03/2009, 17h25
  2. [Débutant] Ecrirer un fichier texte avec les numéros de ligne ?
    Par Krillz dans le forum MATLAB
    Réponses: 14
    Dernier message: 25/02/2009, 23h09
  3. Réponses: 2
    Dernier message: 22/06/2008, 15h41
  4. Réponses: 3
    Dernier message: 02/05/2007, 17h44
  5. [vb6]:Ajuster des données dans un fichier text avec un timer
    Par gaetan.tranvouez dans le forum VB 6 et antérieur
    Réponses: 25
    Dernier message: 28/07/2006, 12h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo