Incrementation dans un loop

Résolu
zebiker Messages postés 34 Date d'inscription vendredi 10 janvier 2003 Statut Membre Dernière intervention 12 novembre 2008 - 6 mars 2008 à 15:59
Lunikmarty Messages postés 55 Date d'inscription lundi 3 mars 2008 Statut Membre Dernière intervention 17 avril 2008 - 6 mars 2008 à 23:07
 Bonjour à tous, je chershe à recupérer toutes les lignes d'un fichier text simple dans un tableau.
Une ligne = une case du tableau
Je fais donc :

           Dim i = 0
           Dim monTableau() As String
           Dim leStream as New StreamReader(File.OpenRead("tata.txt")
            Do
                ligne = leStream.ReadLine() ' getting the line content in this string
                monTableau(i) = leStream.ReadLine()
                i = i + 1 ' increment the counter to know which line am i reading
                ' end of loop (browsing all lines)
            Loop Until ligne = Nothing

Le probleme est qu'apre je recupére monTableau(0) qui contient la derniere ligne, comme si le i ne s'incrémentait pas dans la boucle !!!

Merci de votre aide

Flux

5 réponses

cs_lim Messages postés 329 Date d'inscription jeudi 20 novembre 2003 Statut Membre Dernière intervention 10 mai 2014 7
6 mars 2008 à 16:19
Salut,

   Déjà tu ne dimensionne pas ton tableau, et ceci ne drvrait pas marcher
   ensuite quand tu fait un   ligne=leStream.Readline tu lit la première ligne de ton fichier (quand tu passe la première fois dans ta boucle)
   mais tu fait ensuite tableau(i)=leStream.Readline donc tu lis la ligne suivante.

pour résoudre ton problème utlise ceci

      'Declare un tableau de dimension 0
      Dim tab(0)
As
String
        Dim i
As
Integer
         i = 0
      'Ouvre le fichier

         Dim MyStream
As
New IO.StreamReader(
"C:\test.txt")
      'Lit le fichier tant que pas arrivé à la fin

         While MyStream.Peek <> -1
               'lit la ligne i et la copie dans tab(i)
               tab(i) = MyStream.ReadLine
               'incrémente i
               i = i + 1
               'redimensionn ele tableau en préservant les données déjà présente

               ReDim
Preserve tab(i)

          End
While
      'Ferme le fichier ouvert
      MyStream.Close()

   

@+
LIM
3
NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 159
6 mars 2008 à 16:22
Bonjour

Déjà tu lis 2 lignes par boucle (2 fois ReadLine).

monTablean n'est pas dimensionné, tu peux utiliser List(Of T).

Regarde du coté de My.Computer.FileSystem.ReadAllText, puis un String.Split(..., VbCrLf).

Dans Word, j'Excel. (juste pour la citation)
VB (6, .NET1&2), C++, C#.Net1
Mon site
0
_Fabien Messages postés 119 Date d'inscription vendredi 17 novembre 2006 Statut Membre Dernière intervention 28 avril 2008
6 mars 2008 à 17:32
Avec çà, ça devrait faire l'affaire : http://www.vbfrance.com/codes/SUPPRIMER-LIGNE-FICHIER-TEXTE-UTILISANT-COLLECTION-ARRAYLIST_34289.aspx
... à condition de modifier le code.

_____________________________________________________________
Coder et coder sont 2 choses différentes. La 1ère consiste à arriver au but coûte que coûte. La 2nde est de trouver la solution de manière élégante.
0
Lunikmarty Messages postés 55 Date d'inscription lundi 3 mars 2008 Statut Membre Dernière intervention 17 avril 2008
6 mars 2008 à 23:00
Tu peux utiliser un tableau dynamique sinon:

Dim Tab() As String
Dim nombreLigne As Integer

Open Chemin de ton fichier .txt For Input Access Read As #1

Do While Not EOF(1) ' Bouclage jusque a la fin du fichier
Line Input #1, ligne
nombreLigne = nombreLigne + 1
ReDim Preserve Tab(nombreLigne) ' Redimensionnement du Tableau
Tab(nombreLigne) = ligne
Loop

Close #1
0

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

Posez votre question
Lunikmarty Messages postés 55 Date d'inscription lundi 3 mars 2008 Statut Membre Dernière intervention 17 avril 2008
6 mars 2008 à 23:07
Oups, je t'ai donné du code VB6. Autant pour moi, enfin bon je pense que pour VB.NET le principe reste le même pour les tableau dynamique.

Dsl de mon intrusion sur ce forum... mon code servira à d'autre. Bonne soirée à vous.
0
Rejoignez-nous