Remplir un tableau [Résolu]

darkflyer
Messages postés
39
Date d'inscription
samedi 3 juin 2006
Dernière intervention
28 mai 2007
- 7 nov. 2006 à 18:02 - Dernière réponse : darkflyer
Messages postés
39
Date d'inscription
samedi 3 juin 2006
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!
Afficher la suite 

Votre réponse

6 réponses

Meilleure réponse
mortalino
Messages postés
6812
Date d'inscription
vendredi 16 décembre 2005
Dernière intervention
21 décembre 2011
- 7 nov. 2006 à 18:49
3
Merci
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"
<!--

Merci mortalino 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 86 internautes ce mois-ci

Commenter la réponse de mortalino
TMONOD
Messages postés
260
Date d'inscription
mardi 25 novembre 2003
Dernière intervention
6 novembre 2009
- 7 nov. 2006 à 18:33
0
Merci
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é[^]
Commenter la réponse de TMONOD
mortalino
Messages postés
6812
Date d'inscription
vendredi 16 décembre 2005
Dernière intervention
21 décembre 2011
- 7 nov. 2006 à 18:35
0
Merci
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"
<!--
Commenter la réponse de mortalino
mortalino
Messages postés
6812
Date d'inscription
vendredi 16 décembre 2005
Dernière intervention
21 décembre 2011
- 7 nov. 2006 à 18:37
0
Merci
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"
<!--
Commenter la réponse de mortalino
darkflyer
Messages postés
39
Date d'inscription
samedi 3 juin 2006
Dernière intervention
28 mai 2007
- 7 nov. 2006 à 18:39
0
Merci
en fait y a plusieurs trucs dans chaque ligne et je souhaite recuperer la premiere information seulement!
Commenter la réponse de darkflyer
darkflyer
Messages postés
39
Date d'inscription
samedi 3 juin 2006
Dernière intervention
28 mai 2007
- 7 nov. 2006 à 19:17
0
Merci
ok ça marche
merci de votre aide
Commenter la réponse de darkflyer

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.