Lire des infos spécifiques dans un fichier txt [Résolu]

cs_Fripouil 175 Messages postés lundi 16 décembre 2002Date d'inscription 8 mai 2017 Dernière intervention - 16 mai 2008 à 14:52 - Dernière réponse : cs_Fripouil 175 Messages postés lundi 16 décembre 2002Date d'inscription 8 mai 2017 Dernière intervention
- 20 mai 2008 à 06:20
Bonjour,

Descriptif de mon probléme :

Dans mon fichier texte, j' ai des lignes qui sont enregistrées du type :

N° du Code : 01234567   16:57:32
N° du Code : 76543210   16:45:21
etc

Comment dois je faire pour ne récupérer que les infos que j' ai besoins ( dans ce cas : 01234567   16:57:32, sans le texte : N° du Code : ) dans une listbox ?

J' ai fait une recherche sur le site et on parle de : seek(1,position)

Mais je n' ai pas réussi à m' en servir ou ce n' est pas du tout ça qui me préléve les infos là où j' en ai besoin !

Merci par avance de l' aide que vous pourrez m' apporter.

PS : Si vous pouvez m' aiguiller aussi sur le fait que dans ma listbox je voudrais classer ces infos soit par leur N° soit par leurs heures

Fripouil
Afficher la suite 

Votre réponse

8 réponses

Meilleure réponse
Kevin.Ory 843 Messages postés mercredi 22 octobre 2003Date d'inscription 7 janvier 2009 Dernière intervention - 19 mai 2008 à 02:16
3
Merci
Re,
Il faut bien créer 2 colonnes dans la ListView, mais aussi changer sa propriété View sur Details.

Voici un exemple complet et fonctionnel:

1° Créer un nouveau projet
2° Ajouter ListView1 sur Form1
3° On peut changer les propriétées suivantes de ListView1 au moment du design:
View = Details
Colums: Ajouter 2 colonnes.
4° On peut changer la largeur des colonnes directement sur l'appercu
5° On ajoute ce code:

Public Class Form1

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        ' Lire les lignes du fichier
        Dim Lines() As String = IO.File.ReadAllLines("C:\Fichier.txt", New System.Text.UTF7Encoding)

        ' Parcourir chaque ligne du fichier
        For Each Line As String In Lines

            ' Vérifier que la ligne commence par "N° du Code :"
            If Line.StartsWith("N° du Code :") Then

                ' Enlever le début inutile de la ligne (12 = longueur de la chaine "N° du Code :")
                Line = Line.Substring(12).Trim

                ' Extraire le code
                Dim Code As String = Line.Substring(0, Line.IndexOf(" ")).Trim

                ' Extraire l'heure
                Dim Time As String = Line.Substring(Line.IndexOf(" ")).Trim

                ' Créer et ajouter l'item à la ListView
                Dim Item As New ListViewItem(Code)
                Item.SubItems.Add(Time)
                ListView1.Items.Add(Item)

            End If
        Next
    End Sub

End Class

a) C:\Fichier.txt doit spécifier le fichier à ouvrir
b) J'avais fais une erreur dans mon code: StartsWith et pas StartWith
c) J'ai créé le fichier à ouvrir avec le bloc note. Lorsque on enregistre le fichier, le codage par défaut est ANSI = UTF7. Il faut donc spécifier ce même codage lorsque on ouvre ce fichier dans notre code pour que le ° soit correctement décodé.

Et voici le résultat:

Merci Kevin.Ory 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 80 internautes ce mois-ci

Commenter la réponse de Kevin.Ory
NHenry 14229 Messages postés vendredi 14 mars 2003Date d'inscription 14 juillet 2018 Dernière intervention - 16 mai 2008 à 15:15
0
Merci
Bonjour

Ouvre le fichier en mode texte (en utilisant TextStream, voir MSDN), ensuite ReadLine et .SubString de String.

Le fer à souder a besoin d'une panne pour fonctionner.
VB (6, .NET1&2), C++, C#.Net1
Mon site
Commenter la réponse de NHenry
Kevin.Ory 843 Messages postés mercredi 22 octobre 2003Date d'inscription 7 janvier 2009 Dernière intervention - 16 mai 2008 à 18:29
0
Merci
Salut,

Si tu veux classer soit par leur N° soit par leurs heures, n'utilise pas une ListBox mais une ListView.

' Lire les lignes du fichier
Dim Lines() as String = IO.File.ReadAllLines("C:\Fichier.txt")  
' Parcourir chaque ligne du fichier
For Each Line As String In Lines
    ' Vérifier que la ligne commence par "N° du Code :"
    If Line.StartWith("N° du Code :") Then
       ' Enlever le début inutile de la ligne (12 = longueur de la chaine "N° du Code :")
       Line = Line.SubString(12).Trim
       ' Extraire le code
       Dim Code as String = Line.SubString(0, Line.IndexOf(" ")).Trim  
       ' Extraire l'heure
       Dim Time as String = Line.SubString(Line.IndexOf(" ")).Trim

       ' Créer et ajouter l'item à la ListView
       Dim Item As New ListViewItem(Code)
       Item.SubItems.Add(Time)
       ListView1.Items.Add(Item)

    End If
Next

J'ai pas vérifier si le code fonctionne, mais je pense que c'est bon.
Après pour classer suivant la colonne, c'est un autre sujet. Il faut créer un Comparer pour la ListView.
http://msdn.microsoft.com/fr-fr/library/cfttsh47.aspx
Puis tu l'applique à la propriété ListViewItemSorter de la ListView:
http://msdn.microsoft.com/fr-fr/library/system.windows.forms.listview.listviewitemsorter.aspx
(Il y a un très bon exemple de son utlisation)
Commenter la réponse de Kevin.Ory
cs_Fripouil 175 Messages postés lundi 16 décembre 2002Date d'inscription 8 mai 2017 Dernière intervention - 18 mai 2008 à 19:41
0
Merci
Merci,

mais dans ma listview je n' ai que les Codes qui apparaissent

Ai je bien fait de créer 2 colonnes dans ma listview : Codes et Heure ?

Fripouil
Commenter la réponse de cs_Fripouil
cs_Fripouil 175 Messages postés lundi 16 décembre 2002Date d'inscription 8 mai 2017 Dernière intervention - 18 mai 2008 à 19:50
0
Merci
PS et surement important :

Depuis ma premiére question sur ce sujet, j' ai modifié ma maniére de faire

Je récupére les infos de mon TXT dans une listbox, puis supprime les items : N° du Code :

Est ce cela le probléme ??
ou alors parce que j' ai créer 2 colonnes dans ma listview ??

Fripouil
Commenter la réponse de cs_Fripouil
cs_Fripouil 175 Messages postés lundi 16 décembre 2002Date d'inscription 8 mai 2017 Dernière intervention - 19 mai 2008 à 15:18
0
Merci
Merci Kevin.Ory et les autres.

Mais j' ai un autre probléme, comment comparer 2 listview ainsi créées et afficher dans une 3éme les éléments manquants de la listview2 par rapport à la listview1.

Car dans ce cas, faut il comparer les items et les subitems ? ai-je bien compris ?

Et pour ma troisiéme, faut il faire la même manip pour créer les items manquants ?

Merci encore

Fripouil
Commenter la réponse de cs_Fripouil
Kevin.Ory 843 Messages postés mercredi 22 octobre 2003Date d'inscription 7 janvier 2009 Dernière intervention - 19 mai 2008 à 19:47
0
Merci
Car dans ce cas, faut il comparer les items et les subitems ? ai-je bien compris ?


Forcément il faudra aussi comparer le SubItem si l'heure est importante dans ton tri.
Tu peux aussi d'abord créer une liste avant d'ajouter tes items à la ListBox (List(of xxxx))

Et pour ma troisiéme, faut il faire la même manip pour créer les items manquants ?
Ben.. a toi de voir. Mtn tu sais ajouter des Items à une ListView, à toi d'imaginer ton programme
Commenter la réponse de Kevin.Ory
cs_Fripouil 175 Messages postés lundi 16 décembre 2002Date d'inscription 8 mai 2017 Dernière intervention - 20 mai 2008 à 06:20
0
Merci
Désolé mais je n' y arrive pas.

Je ne comprends pas comment comparer ses fichus listview.

J' ai beau bidouiller, j' ai sans arrêt des bugs.

J' ai déja eu du mal à comprendre pour 1 infos à comparer mais avec 2 !!!

Mais là, je dois mal m 'y prendre..

Fripouil
Commenter la réponse de cs_Fripouil

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.