Remplir un tableau

Résolu
darkflyer Messages postés 39 Date d'inscription samedi 3 juin 2006 Statut Membre Dernière intervention 28 mai 2007 - 7 nov. 2006 à 18:02
darkflyer Messages postés 39 Date d'inscription samedi 3 juin 2006 Statut Membre Dernière intervention 28 mai 2007 - 7 nov. 2006 à 19:17
bonjour,
je souhaite ouvrir un fichier .txt avec VB05, et stocker ces données dans un tableau pour cela j'utilise le morceau de code suivant:
Private Sub Button7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button7.Click
        If OpenFileDialog1.ShowDialog() = Windows.Forms.DialogResult.OK Then
            Dim filenum As Integer
            Dim FILE_NAME As String = OpenFileDialog1.FileName
            filenum = FreeFile()
            'FileOpen(filenum, FILE_NAME, OpenMode.Input)
            If System.IO.File.Exists(FILE_NAME) = True Then
                Dim objReader As New System.IO.StreamReader(FILE_NAME)
                Dim ligne As Integer = 0
                Dim s As String
                Dim matrix(0 To 99, 0 To 999) As String
                Dim x As Integer = 0
                'While Not EOF(filenum)
                Do While objReader.Peek() > -1
                    Dim line As String
                    line = objReader.ReadLine() & vbNewLine
                    ligne = ligne + 1
                    Dim split As String() = line.Split("   ")
                    For Each s In split
                        x = x + 1
                        matrix(ligne, x) = s
                    Next s
                Loop
                'End While
                TextBox2.Text = matrix(1, 1)
                TextBox3.Text = matrix(2, 1)
                TextBox9.Text = matrix(3, 1)
                TextBox1.Text = matrix(4, 1)
                TextBox10.Text = matrix(5, 1)
                ComboBox4.Text = matrix(6, 1)
                TextBox11.Text = matrix(7, 1)
                TextBox12.Text = matrix(8, 1)
                TextBox13.Text = matrix(9, 1)
                TextBox14.Text = matrix(10, 1)
                ComboBox3.Text = matrix(11, 1)
                TextBox7.Text = matrix(12, 1)
                TextBox8.Text = matrix(13, 1)
                ComboBox2.Text = matrix(14, 1)
                TextBox15.Text = matrix(15, 1)
                TextBox16.Text = matrix(16, 1)
                TextBox17.Text = matrix(17, 1)
                TextBox18.Text = matrix(18, 1)
                TextBox19.Text = matrix(19, 1)
                ComboBox1.Text = matrix(20, 1)
                objReader.Close()
                fileclose()
            End If
        End If
    End Sub
 
le pb c'est qu'en executant le code, tout ce que j'obtient c'est la premiere valeur!!! comme si les autres lignes n'existaient pas!!
queelqu'un sait t-il ce que c'est le pb dans mon code
merci d'avance!

6 réponses

mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
7 nov. 2006 à 18:49
Et bien il faut refaire un split sur chaque ligne (avec espace, point, bref, ton séparateur), et tu récupères que la première valeur du split (ex : PremValeurDeLigne split(line): matrix(ligne) PremValeurDeLigne(0)     /ex)

@++

<hr size="2" width="100%" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
3
TMONOD Messages postés 256 Date d'inscription mardi 25 novembre 2003 Statut Membre Dernière intervention 6 novembre 2009 1
7 nov. 2006 à 18:33
Bonsoir,
Oulala, y a du boulot !
Quelques conseils 
1/  Pour récuperer le nom de ton fichier utilise plutôt une OpenFileDialog (gà prendre dans les outils et faire glisser sur ton form)
ensuite tu l'ouvre par OpenfileDialog1.show()
Le fichier avec son chemin son ensuite stockés dans OpenfileDialog1.FileName

2/ Utilise plutôt une datagrid pour afficher tes données plutôt que tout ce tintouin avec matrix et ribambelle de textboxes !  :
   - Créer une datatable du nom que tu veux
   - A chaque lecture d'une ligne tu fait ton split dans un tableau. ca c'est bon
   - Ensuite tu créer une DataRow avec le bon nombre de datacolums
en admettons que ta datarow se nomme DTR
pour chaque élément du tableau tu fais DTR(i)=ligne(i)

à la fin du affecte ta datatable à la datasource de ta datagrid et le tour est joué !!

A+




Jcbé[^]
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
7 nov. 2006 à 18:35
salut,

Dim matrix(0 To 99<strike>, 0 To 999</strike>) As String

et dans
                Do While objReader.Peek() > -1
                    Dim line As String
                    line = objReader.ReadLine() & vbNewLine
                    <strike>ligne = ligne + 1</strike>
                    Dim split As String() = line.Split("   ")
                    For Each s In split
                        <strike>x = x + 1</strike>
                        ligne = ligne + 1
                        matrix(ligne<strike>, x</strike>) = s
                    Next s
                Loop

@++

<hr size="2" width="100%" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
7 nov. 2006 à 18:37
ah et dans
                TextBox2.Text = matrix(1<strike>, 1</strike>)
                TextBox3.Text = matrix(2<strike>, 1</strike>)
                TextBox9.Text = matrix(3<strike>, 1</strike>)
                TextBox1.Text = matrix(4<strike>, 1</strike>)
               
etc...

@++

<hr size="2" width="100%" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
darkflyer Messages postés 39 Date d'inscription samedi 3 juin 2006 Statut Membre Dernière intervention 28 mai 2007
7 nov. 2006 à 18:39
en fait y a plusieurs trucs dans chaque ligne et je souhaite recuperer la premiere information seulement!
0
darkflyer Messages postés 39 Date d'inscription samedi 3 juin 2006 Statut Membre Dernière intervention 28 mai 2007
7 nov. 2006 à 19:17
ok ça marche
merci de votre aide
0
Rejoignez-nous