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 :

Pb utilisation Split avec Visual basic 2008 Express


Sujet :

VB.NET

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France, Essonne (Île de France)

    Informations forums :
    Inscription : Mars 2008
    Messages : 31
    Points : 19
    Points
    19
    Par défaut Pb utilisation Split avec Visual basic 2008 Express
    Bonjour
    Visal Basic 2008 Express
    Quelqu'un pourrait-il me donner une réponse au pb suivant
    Lorsue j'execute la séquence suivante,le programme s'arrête avec le diag suivant:

    [IMG]http:/duarep.free.fr/download/Provisoire/screenshot_01.jpg[/IMG]

    Si je rajoute un Message entre le Split et l'utilisation du tableau (voir séquence suivante) la sequence se déroule normalement et les lignes sont bien écrites dand la ListBox.

    Merci d'avance pour votre aide.

    *********************************************************
    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
            Dim Ligne As String
            Dim Tableau(12) As String
     
            FileOpen(1, "C:\\BANQUES\CA.txt", OpenMode.Input) ' Ouvre en lecture.
            Do While Not EOF(1) ' tant que la fin du fichier 1 ( origine) n'est pas terminée
     
                Ligne = LineInput(1) ' On lit la ligne du fichier d'origine
     
                Tableau = Ligne.Split("*")
     
                Tableau(2) = Tableau(2).Insert(Tableau(2).Length, Space(30 - Tableau(2).Length))
                Tableau(3) = Tableau(3).Insert(Tableau(3).Length, Space(3 - Tableau(3).Length))
                Tableau(4) = Tableau(4).Insert(Tableau(4).Length, Space(12 - Tableau(4).Length))
                Tableau(5) = Tableau(5).Insert(Tableau(5).Length, Space(12 - Tableau(5).Length))
                Tableau(6) = Tableau(6).Insert(Tableau(6).Length, Space(12 - Tableau(6).Length))
                Tableau(7) = Tableau(7).Insert(Tableau(7).Length, Space(12 - Tableau(7).Length))
                Tableau(8) = Tableau(8).Insert(Tableau(8).Length, Space(12 - Tableau(8).Length))
                ListBox1.Items.Add(Tableau(0) & " " & Tableau(1) & " " & Tableau(2) & " " & Tableau(4) & " " & Tableau(5) & " " & Tableau(6) & " " & Tableau(7) & " " & Tableau(8))
     
            Loop
        End Sub
    ***********************************************************  
        Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
            Dim Ligne As String
            Dim Tableau(12) As String
     
            FileOpen(1, "C:\\BANQUES\CA.txt", OpenMode.Input) ' Ouvre en lecture.
            Do While Not EOF(1) ' tant que la fin du fichier 1 ( origine) n'est pas terminée
     
                Ligne = LineInput(1) ' On lit la ligne du fichier d'origine
     
                Tableau = Ligne.Split("*")
     
                MsgBox("")
     
                Tableau(2) = Tableau(2).Insert(Tableau(2).Length, Space(30 - Tableau(2).Length))
                Tableau(3) = Tableau(3).Insert(Tableau(3).Length, Space(3 - Tableau(3).Length))
                Tableau(4) = Tableau(4).Insert(Tableau(4).Length, Space(12 - Tableau(4).Length))
                Tableau(5) = Tableau(5).Insert(Tableau(5).Length, Space(12 - Tableau(5).Length))
                Tableau(6) = Tableau(6).Insert(Tableau(6).Length, Space(12 - Tableau(6).Length))
                Tableau(7) = Tableau(7).Insert(Tableau(7).Length, Space(12 - Tableau(7).Length))
                Tableau(8) = Tableau(8).Insert(Tableau(8).Length, Space(12 - Tableau(8).Length))
                ListBox1.Items.Add(Tableau(0) & " " & Tableau(1) & " " & Tableau(2) & " " & Tableau(4) & " " & Tableau(5) & " " & Tableau(6) & " " & Tableau(7) & " " & Tableau(8))
     
            Loop
        End Sub

  2. #2
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    dis nous plutot ce que tu penses vouloir faire avec tes .insert parce que là ca me semble bizare
    et le problème ne vient pas du split

    et c'est du code vb6, il faut passer à du vrai code .net

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for each ligne as string in system.io.file.readalllines(path)
      dim valeurs() as string = ligne.split("*")
      ' traitement
    next
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France, Essonne (Île de France)

    Informations forums :
    Inscription : Mars 2008
    Messages : 31
    Points : 19
    Points
    19
    Par défaut
    Merci pour la réponse

    C'est vrai que je suis en recherche pour trouver comment faire pour présenter dans ListBox les lignes du fichier de manière que les champs (de longueurs variables et séparés par une astérisque) soient présentés alignés.
    Ex de lignes:
    X*01/01/2013*AGRR**817,26 **231,16 *231,16 *0,00*3 000,00
    X*02/01/2013*Carrefour***84,42 *146,74 *146,74 *0,00*3 000,00

    En ce qui concerne le pb mê en éliminant les .insert j'ai également le mème diag

    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
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    Dim Ligne As String
    Dim Tableau(12) As String
     
    FileOpen(1, "C:\\BANQUES\CA.txt", OpenMode.Input) ' Ouvre en lecture.
    Do While Not EOF(1) ' tant que la fin du fichier 1 ( origine) n'est pas terminée
     
    Ligne = LineInput(1) ' On lit la ligne du fichier d'origine
     
    Tableau = Ligne.Split("*")
     
     
    MsgBox(Tableau(0) & " " & Tableau(1) & " " & Tableau(2) & " " & Tableau(4) & " " & Tableau(5) & " " & Tableau(6) & " " & Tableau(7) & " " & Tableau(8))
     
    Loop
    End Sub

  4. #4
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    comme tu as du le remarquer sur mon post il y a moyen de mettre le code en forme, balise code ou bouton # sur l'éditeur de message

    le mieux serait peut etre un datagridview, ca permet d'avoir des colonnes, plutot que de bricoler le rendu dans un listbox ...

    sinon pour le listbox ca donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    for each ligne as string in system.io.file.readalllines(path)
      dim valeurs() as string = ligne.split("*")
      valeurs(0) = valeurs(0).padright(30)
      valeurs(1) = valeurs(0).padright(20)
      '...
      me.listbox1.items.add(valeurs(0) & valeurs(1) ...)
    next
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France, Essonne (Île de France)

    Informations forums :
    Inscription : Mars 2008
    Messages : 31
    Points : 19
    Points
    19
    Par défaut
    Merci
    Je vais essayer et également regarder comment fonctionne ListView que je viens de découvrir

  6. #6
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    ai-je parlé de listview ?
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France, Essonne (Île de France)

    Informations forums :
    Inscription : Mars 2008
    Messages : 31
    Points : 19
    Points
    19
    Par défaut
    Suite à tes conseils, j'ai regargé le fonctionnement de DataGridView et j'ai utilisé la commande suivante pour ajouter des lignes.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DataGridView1.Rows.Add("XXXXX", "XXXX1", "XXXX2", "XXXX3")
    Pourrais tu avoir la gentillesse de m'indiquer comment procéder pour lire le contenu d'une ligne préalablement sélectionnée

    Merci

  8. #8
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    datagridview.selectedrows
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France, Essonne (Île de France)

    Informations forums :
    Inscription : Mars 2008
    Messages : 31
    Points : 19
    Points
    19
    Par défaut
    Merci

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France, Essonne (Île de France)

    Informations forums :
    Inscription : Mars 2008
    Messages : 31
    Points : 19
    Points
    19
    Par défaut
    Après avoir suivi tes conseils, je retombe sur le pb d'origine cad:

    si je lance

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
     
            Dim Tableau(12) As String
     
            'FileOpen(1, "C:\\BANQUES\CA.txt", OpenMode.Input) ' Ouvre en lecture.
     
            For Each ligne As String In System.IO.File.ReadAllLines("C:\\BANQUES\CA.txt")
                Dim valeurs() As String = ligne.Split("*")
                DataGridView1.Rows.Add(valeurs(0), valeurs(1), valeurs(2), valeurs(3))
            Next
        End Sub
    J'ai le diag d'erreur cité plus haut

    si j'ajoute une ligne MsgBox le DataGridView1 se remplit bien ligne à ligne après chaque message.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
     
            Dim Tableau(12) As String
     
            'FileOpen(1, "C:\\BANQUES\CA.txt", OpenMode.Input) ' Ouvre en lecture.
     
            For Each ligne As String In System.IO.File.ReadAllLines("C:\\BANQUES\CA.txt")
                Dim valeurs() As String = ligne.Split("*")
                MsgBox("")
                DataGridView1.Rows.Add(valeurs(0), valeurs(1), valeurs(2), valeurs(3))
            Next
        End Sub

  11. #11
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    quelle ligne plante ? quel message d'erreur ? quel type d'erreur (se finit par Exception, comme par exemple NullReferenceException) ?
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France, Essonne (Île de France)

    Informations forums :
    Inscription : Mars 2008
    Messages : 31
    Points : 19
    Points
    19
    Par défaut
    L'exception Iindex OutOfRange n'a pas été gérée.

    En mode debug si je pointe l'inex sur valeur ,il m'indique valeur (Length =1)

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France, Essonne (Île de France)

    Informations forums :
    Inscription : Mars 2008
    Messages : 31
    Points : 19
    Points
    19
    Par défaut
    La ligne du blocage est
    DataGridView1.Rows.Add(valeurs(0), valeurs(1), valeurs(2), valeurs(3))

    c'est en pointant survaleurs qu'il m'indique valeurs (Length =1)

  14. #14
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    regarde le contenu de ligne quand ca plante, tu dois être sur une ligne vide
    donc le split ne retourne qu'une valeur (vide) et donc valeurs (1) n'existe pas (ni la suite)

    une solution, après le for :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     if ligne = "" then continue for
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  15. #15
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France, Essonne (Île de France)

    Informations forums :
    Inscription : Mars 2008
    Messages : 31
    Points : 19
    Points
    19
    Par défaut
    Tu as raison il y avait bien une ligne vide en fin du fichier txt

    je croyais qu'il se plantait dès la 1ère ligne car aucune ligne n'était présente dans le DataGridView qui ne doit s'afficher qu'en fin du For

    Autant pour moi et merci pour ta patience et ta gentillesse

    Je clos donc le sujet

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

Discussions similaires

  1. Ecrire un mail Outlook avec Visual Basic 2008 Express
    Par Pingouin1313 dans le forum VB.NET
    Réponses: 7
    Dernier message: 28/10/2009, 22h38
  2. Réponses: 3
    Dernier message: 30/08/2009, 11h47
  3. Réponses: 3
    Dernier message: 16/07/2008, 09h49
  4. Réponses: 2
    Dernier message: 19/03/2008, 10h30
  5. Réponses: 5
    Dernier message: 10/01/2008, 09h37

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