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 :

supprimer un ligne dans un fichier


Sujet :

VB.NET

  1. #1
    Membre habitué Avatar de souaddemaroc
    Inscrit en
    Novembre 2005
    Messages
    194
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 194
    Points : 143
    Points
    143
    Par défaut supprimer un ligne dans un fichier
    Salut
    L'application que je développe consiste à lire un fichier texte(qui contient des emails) et d'exporter les emails vers un ritchtextbox on cliquant sur le bouton parcourir
    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
    30
    31
    32
     
    Private Sub btnparcourir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnparcourir.Click
            'creation de l'objet  boite de dialogue ouvrir
            Dim InstOpenFile As New OpenFileDialog
            '***Parametrage boite de dialgoque ouvrir****'
            'Le path de l'ouverture de la boite de dialogue
            InstOpenFile.InitialDirectory = "c:\"
            'le filtre pour les fichiers
            InstOpenFile.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*"
            InstOpenFile.FilterIndex = 1
            'restauration du répertoire inial apres la fermeture de la boite de dialogue
            InstOpenFile.RestoreDirectory = True
            '****Affiche la boite de dialogue****'
            If InstOpenFile.ShowDialog() = DialogResult.OK Then
                TcheminFichier.Text = InstOpenFile.FileName
                 f = File.OpenRead(TcheminFichier.Text)
                enreg = New StreamReader(f, System.Text.Encoding.Default)
                enreg.BaseStream.Seek(0, SeekOrigin.Begin)
                '.peek defini le caractere suivant, si =-1 c'est qu'il n'y a plus de caractere
                'donc la fin du fichier est atteinte
                compteur = 0
                While enreg.Peek() > -1
                    'Dim rep As String = enreg.Peek
                    TResFichier.Text = TResFichier.Text + enreg.ReadLine() + vbNewLine
                    compteur = compteur + 1
                End While
                'affiche les infos du fichier
                  Else
                TcheminFichier.Text = "Veuillez choisir un fichier   --->"
            End If
            Me.nbrenreg.Text = "Nombre d'enregistrements :" & compteur
        End Sub
    Dans le ritchtextebox,des emails peuvent comporter des lettres accentués (é,à,â ...) alors ce que je veux c'est d'enlever les emails qui contient ces lettres en cliquant sur le bouton filtrer
    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
     
     f = File.OpenRead(TcheminFichier.Text)
            enreg = New StreamReader(f, System.Text.Encoding.Default)
            enreg.BaseStream.Seek(0, SeekOrigin.Begin)
            While enreg.Peek >= 0
                CaractereLu = enreg.ReadLine
                Dim tab(CaractereLu.Length) As String
                For i = 1 To CaractereLu.Length
                    tab(i) = Mid(CaractereLu, i, 1)
                Next
                For i = 1 To CaractereLu.Length
                    If tab(i) = "é" Or tab(i) = "è" Or tab(i) = "à" Or tab(i) = "ç" Or tab(i) = "ê" Or tab(i) = "â" Or tab(i) = "ù" Then
                        i = i + 1
                        Me.txtfiltre.Text &= tab(i)
                    Else
                        Me.txtfiltre.Text &= tab(i)
                    End If
                Next i
            End While
            enreg.Close()
        End Sub
    Mais le problème, c'est que juste les lettres accentués qui disparait c'est à dire à la place d'enlever toute la ligne c'est juste le caractére accentué qui disparait
    La vie semble à un pont et le meilleur de nous c'est ce lui qui le traversent

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2005
    Messages : 80
    Points : 89
    Points
    89
    Par défaut
    En supposant que chaque email dans le fichier est sur une ligne différente, tu n'aurais qu'à faire ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Dim Reader As New IO.StreamReader("C:\Fichier.txt")
    Dim Courriel As String
    While(Not Reader.EndOfStream)
         Courriel = Reader.ReadLine()
         If Not Courriel.Contains("à") AND Not Courriel.Contains("é") Then 'etc...
               Me.txtfiltre.Text &= Courriel
         End If
    End While
    Reader.Close

  3. #3
    Membre actif Avatar de DarkMolo
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    207
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Maroc

    Informations forums :
    Inscription : Juillet 2006
    Messages : 207
    Points : 277
    Points
    277
    Par défaut
    Salut,
    Je reprend le code de Zyth, juste pour faire plus simple et éviter les .Contains("à") AndAlso .Contains("é")...

    Code VB.NET : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Dim Reader As New IO.StreamReader("C:\Fichier.txt")
    Dim Courriel As String
    Dim CaractèreABanir As Char() = "ùàéè".ToCharArray()  '...
    While(Not Reader.EndOfStream)
         Courriel = Reader.ReadLine()
         If CodeConsult.IndexOfAny(CaractèreABanir) < 0 Then
               Me.txtfiltre.Text &= Courriel
         End If
    End While
    Reader.Close
    Certified SCJP 5.0 / SCWCD 5.0 / SCEA 5.0
    C'est une grande folie de vouloir être sage tout seul.
    Duc de La Rochefoucauld

  4. #4
    Membre habitué Avatar de souaddemaroc
    Inscrit en
    Novembre 2005
    Messages
    194
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 194
    Points : 143
    Points
    143
    Par défaut
    Salut les amis je vais essai ce code mnt merçi
    La vie semble à un pont et le meilleur de nous c'est ce lui qui le traversent

  5. #5
    Membre habitué Avatar de souaddemaroc
    Inscrit en
    Novembre 2005
    Messages
    194
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 194
    Points : 143
    Points
    143
    Par défaut
    Salut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
            Dim Reader As New IO.StreamReader("C:\fichier.txt")
            Dim Courriel As String
            Dim CaractèreABanir As Char() = "ùàéè".ToCharArray()  '...
            While (Not Reader.EndOfStream)            Courriel = Reader.ReadLine()
                If Courriel.IndexOfAny(CaractèreABanir) < 0 Then
                    Me.txtfiltre.Text &= Courriel
                End If
            End While
            Reader.Close()
    J'ai un probléme dans cette ligne
    Alors quoi faire ?????
    La vie semble à un pont et le meilleur de nous c'est ce lui qui le traversent

  6. #6
    Membre actif Avatar de DarkMolo
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    207
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Maroc

    Informations forums :
    Inscription : Juillet 2006
    Messages : 207
    Points : 277
    Points
    277
    Par défaut
    Salut,
    Ce n'est fonctionnel que sous le Framework 2, si tu travailles encore avec le Framework 1 (probablement VS2003), eh bien la classe StreamReader ne contient pas encore de membre EndOfStream.
    Je crois que t'aurais pu faire un petit effort pour trouver seule non:

    Code VB.NET : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Dim Reader As New IO.StreamReader("C:\fichier.txt")
    Dim Courriel As String
    Dim CaractèreABanir As Char() = "ùàéè".ToCharArray()  '...
    Courriel= Reader.ReadLine()
            While (Not Courriel Is Nothing)
                If Courriel.IndexOfAny(CaractèreABanir) < 0 Then
                    Me.txtfiltre.Text &= Courriel
                End If
                Courriel= Reader.ReadLine()
            End While
    Reader.Close()
    Certified SCJP 5.0 / SCWCD 5.0 / SCEA 5.0
    C'est une grande folie de vouloir être sage tout seul.
    Duc de La Rochefoucauld

  7. #7
    Membre habitué Avatar de souaddemaroc
    Inscrit en
    Novembre 2005
    Messages
    194
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 194
    Points : 143
    Points
    143
    Par défaut
    Salut
    J'ai une erreur dans cette ligne je sais pas pourquoi, en effet j'ai pas bien compris cette ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    If Courriel.IndexOfAny(CaractèreABanir) < 0 Then
    La vie semble à un pont et le meilleur de nous c'est ce lui qui le traversent

  8. #8
    Membre actif Avatar de DarkMolo
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    207
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Maroc

    Informations forums :
    Inscription : Juillet 2006
    Messages : 207
    Points : 277
    Points
    277
    Par défaut
    Salut,
    souaddemaroc dit:
    J'ai une erreur dans cette ligne je sais pas pourquoi, en effet j'ai pas bien compris cette ligne
    Code VB.NET : Sélectionner tout - Visualiser dans une fenêtre à part
    If Courriel.IndexOfAny(CaractèreABanir) < 0 Then
    Bizarre, y'a rien qui pourrait pausait problème à ce niveau, cette ligne est précédé par un While (Not Courriel Is Nothing), donc Courriel contient bien une valeur... T'aurais pu nous donné le message d'erreur!!

    Pour l'explication avec un petit F1, t'aurais pu trouver:
    MSDN dit:
    Signale l'index de la première occurrence dans cette instance de tout caractère dans un tableau de caractères Unicode spécifié.
    Donc Courriel.IndexOfAny(CaractèreABanir) va renvoyer l'index de la première occurrence de l'un de ces char "éàùè...", ça serait entre 0 et Courriel.Length-1, sinon pour simplifier l'MSDN dit que si IndexOfAny ne trouve aucun des char il renvoie -1.
    Certified SCJP 5.0 / SCWCD 5.0 / SCEA 5.0
    C'est une grande folie de vouloir être sage tout seul.
    Duc de La Rochefoucauld

  9. #9
    Membre habitué Avatar de souaddemaroc
    Inscrit en
    Novembre 2005
    Messages
    194
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 194
    Points : 143
    Points
    143
    Par défaut
    Salut Dark Molo
    Le message d'erreur est :
    La réference d'objet n'est pas défini à une instance d'objet
    La vie semble à un pont et le meilleur de nous c'est ce lui qui le traversent

  10. #10
    Membre actif Avatar de DarkMolo
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    207
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Maroc

    Informations forums :
    Inscription : Juillet 2006
    Messages : 207
    Points : 277
    Points
    277
    Par défaut
    D'après ce que tu dis, le Not Courriel IS Nothing n'est pas le bon test, essayes avec ce code:

    Code VB.NET : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Dim Reader As New IO.StreamReader("C:\fichier.txt")
    Dim Courriel As String
    Dim CaractereABanir As Char() = "ùàéè".ToCharArray()  '...
    While Reader.Peek() >= 0
       Courriel= Reader.ReadLine()
       If Courriel.IndexOfAny(CaractereABanir) < 0 Then
          Me.txtfiltre.Text &= Courriel
       End If
    End While
    Reader.Close()
    Certified SCJP 5.0 / SCWCD 5.0 / SCEA 5.0
    C'est une grande folie de vouloir être sage tout seul.
    Duc de La Rochefoucauld

  11. #11
    Membre habitué Avatar de souaddemaroc
    Inscrit en
    Novembre 2005
    Messages
    194
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 194
    Points : 143
    Points
    143
    Par défaut
    Salut Darkmolo
    Aprés importer la liste des emails dans le Richtextbox, je veux filtrer à partir de cette richtextbox
    La vie semble à un pont et le meilleur de nous c'est ce lui qui le traversent

  12. #12
    Membre habitué Avatar de souaddemaroc
    Inscrit en
    Novembre 2005
    Messages
    194
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 194
    Points : 143
    Points
    143
    Par défaut
    Salut
    Le code que tu m'a donné Darkmolo fonctionne assez trés bien, mnt je veux enlever les doublons avez vous une idée. à ce propos
    La vie semble à un pont et le meilleur de nous c'est ce lui qui le traversent

  13. #13
    Membre actif Avatar de DarkMolo
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    207
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Maroc

    Informations forums :
    Inscription : Juillet 2006
    Messages : 207
    Points : 277
    Points
    277
    Par défaut
    Ce n'est pas la meilleure méthode, le RichBoxText comporte une méthode qui référencie un tableau de string(Les lignes contenues dans ce RichBoxText), rassure moi, tes adresses Emails sont séparés par des retour à la ligne.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Dim ListDesMail As New Collections.Specialized.StringCollection
    For Each AdresseMail As String In txtfiltre.Lines
        If ListDesMail.IndexOf(AdresseMail) = -1 Then
           ListDesMail.Add(AdresseMail)
        End If
    Next AdresseMail
    txtfiltre.Text = ""
    For i As Integer = 0 To ListDesMail.Count - 1
        txtfiltre.Text &= ListDesMail(i) & Environment.NewLine
    Next i
    ListDesMail.Clear()
    Certified SCJP 5.0 / SCWCD 5.0 / SCEA 5.0
    C'est une grande folie de vouloir être sage tout seul.
    Duc de La Rochefoucauld

  14. #14
    Membre habitué Avatar de souaddemaroc
    Inscrit en
    Novembre 2005
    Messages
    194
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 194
    Points : 143
    Points
    143
    Par défaut
    Salut
    C'est vrai mes emails sont séparées par un retour à la ligne
    Je vais essai ce code mnt
    La vie semble à un pont et le meilleur de nous c'est ce lui qui le traversent

  15. #15
    Membre habitué Avatar de souaddemaroc
    Inscrit en
    Novembre 2005
    Messages
    194
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 194
    Points : 143
    Points
    143
    Par défaut
    Salut Darkmolo
    Premièrement j'ai pas bien compris le code situé en haut
    Deuxièment j'ai essai ce code dans le bouton filtrer mais rien ne s'afficher dans le txtfiltre
    La vie semble à un pont et le meilleur de nous c'est ce lui qui le traversent

  16. #16
    Membre habitué Avatar de souaddemaroc
    Inscrit en
    Novembre 2005
    Messages
    194
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 194
    Points : 143
    Points
    143
    Par défaut
    Alors comment faire pour éliminer les doublons à partir de mon richtextbox ????
    La vie semble à un pont et le meilleur de nous c'est ce lui qui le traversent

Discussions similaires

  1. Supprimer une ligne dans un fichier texte
    Par @yoyo dans le forum Entrée/Sortie
    Réponses: 11
    Dernier message: 28/03/2006, 14h19
  2. Supprime une ligne dans un fichier texte
    Par dev7 dans le forum Linux
    Réponses: 4
    Dernier message: 28/03/2006, 01h33
  3. Supprimer une ligne dans un fichier text
    Par philippe13 dans le forum Entrée/Sortie
    Réponses: 4
    Dernier message: 14/03/2006, 16h43
  4. Supprimer une ligne dans un fichier
    Par tsing dans le forum Linux
    Réponses: 4
    Dernier message: 06/02/2006, 14h45
  5. Supprimer une ligne dans un fichier
    Par sbeu dans le forum Langage
    Réponses: 3
    Dernier message: 13/05/2003, 10h30

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