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 :

probleme de lecture d'un fichier txt


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2018
    Messages
    323
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2018
    Messages : 323
    Par défaut probleme de lecture d'un fichier txt
    Bonjour,

    Mon problème, je voudrais lire mon fichier txt dans listview1 mais j'arrive pas à afficher correctement les données dans listview1.

    exemple txt :
    SMNE01
    New Super Mario Bros.

    0 continue utilisé
    047789F0 38A00000

    1 ups ne compte pas
    04060568 60000000

    ....etc
    Mon code de lecture
    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
    26
    27
    28
    29
    Private CodeLine As New Regex("^[0-9A-Fa-f]{8} [0-9A-Fa-f]{8}$")
            ListView1.Items.Clear()
            Dim Cheats As New List(Of cheat)
            Dim txt As String() = File.ReadAllLines(filename)
            If (txt.Length = 6) Then Throw New FileLoadException("Erreur de lecture du fichier txt !")
            TextBox1.Text = txt(0)
            TextBox2.Text = txt(1)
            For i = 3 To txt.Count - 1
                Dim cheat As New cheat()
                Dim lines As String() = txt(i).Split(New String() {Environment.NewLine}, StringSplitOptions.None)
                Dim name As String = lines.First
                Dim code As New StringBuilder
                For Each line As String In lines.Skip(1)
                    If Not CodeLine.IsMatch(line) Then
                        Continue For
                    End If
                    code.AppendLine(line)
                Next
                If name.Count > 0 Then
                    cheat.names = name
                End If
                If code.Length > 0 Then
                    cheat.codes = code.ToString
                End If
                Cheats.Add(cheat)
            Next
            For Each cheat As cheat In Cheats
                ListView1.Items.Add(New ListViewItem(New String() {cheat.names, cheat.codes}))
            Next
    Pouvez-vous m'aider à résoudre le problème de lecture? merci d'avance

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1 547
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 547
    Par défaut
    Et c'est quoi le problème que tu rencontres ?
    et il nous manque ta classe cheat

    Sinon pour commencer ta ligne 11 ne sert à rien, txt est un tableau des lignes, donc par définition ne contient pas de retour à la ligne, donc lines sera toujours égal à txt(i) et ne contiendra donc qu'une seule ligne; à partir de là toute la logique derrière s'effondre.

  3. #3
    Membre éprouvé
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2018
    Messages
    323
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2018
    Messages : 323
    Par défaut
    Bonsoir,

    le code cheat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Class cheat
     
        Property names As String
     
        Property codes As String
     
    End Class
    le problème que je rencontre que j'arrive pas affiche correctement dans listview1 . (voir photo)
    image dans listview1 :
    Nom : Sans titre.png
Affichages : 146
Taille : 3,8 Ko

    exemple dans listview1 que je voudrais afficher :
    Titre codes
    0 continue utilisé 047789F0 38A00000
    1 ups ne compte pas 04060568 60000000

    Avec le code, je commence par la ligne 3 mais j'arrive pas à afficher correctement (voir exemple au dessus ).merci d'avance

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1 547
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 547
    Par défaut
    voir également ma remarque sur ta ligne 10 (bizarre hier j'indiquais la ligne 11 pour le split, problème d'yeux bancals peut-être )... relance en pas à pas tu devrais comprendre.

  5. #5
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 978
    Par défaut
    C'est parce que ta liste n'a pas le contenu que tu crois.
    Avec ces données et ce code, tu vas avoir 5 lignes avec le code à Nothing et le nom qui correspond à chaque ligne du fichier.

    Essaie ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
            Dim lines As String() = File.ReadAllLines(filename) _
                .Skip(3).Where(Function(it) Not String.IsNullOrWhiteSpace(it)).ToArray()
     
            For i As Integer = 0 To lines.Length - 1 Step 2
                If CodeLine.IsMatch(lines(i + 1)) Then
                    Cheats.Add(New Cheat With {.names = lines(i), .codes = lines(i + 1)})
                End If
            Next

  6. #6
    Membre éprouvé
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2018
    Messages
    323
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2018
    Messages : 323
    Par défaut
    Merci popo . pour la solution ça fonctionne très bien.

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

Discussions similaires

  1. Probleme de lecture d'un fichier avec caractères speciaux
    Par bygui dans le forum Entrée/Sortie
    Réponses: 5
    Dernier message: 26/06/2006, 09h35
  2. Gros probleme de lecture d'un fichier texte
    Par Draekonyss dans le forum C
    Réponses: 12
    Dernier message: 25/04/2006, 09h25
  3. [Sécurité] Problèmes de droits d'un fichier txt
    Par bremer dans le forum Langage
    Réponses: 1
    Dernier message: 05/12/2005, 21h13
  4. Probleme de lecture d'un fichier XML
    Par chleuh dans le forum Langage
    Réponses: 8
    Dernier message: 30/08/2005, 12h04
  5. [debutant] lecture d'un fichier txt de 10mo
    Par karamazov994 dans le forum Entrée/Sortie
    Réponses: 11
    Dernier message: 19/04/2005, 15h55

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