Incrementation dans un loop [Résolu]

Messages postés
34
Date d'inscription
vendredi 10 janvier 2003
Dernière intervention
12 novembre 2008
- - Dernière réponse : Lunikmarty
Messages postés
55
Date d'inscription
lundi 3 mars 2008
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
Afficher la suite 

Votre réponse

5 réponses

Meilleure réponse
Messages postés
329
Date d'inscription
jeudi 20 novembre 2003
Dernière intervention
10 mai 2014
6
3
Merci
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

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 91 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_lim
Messages postés
14358
Date d'inscription
vendredi 14 mars 2003
Dernière intervention
22 janvier 2019
366
0
Merci
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
Commenter la réponse de NHenry
Messages postés
119
Date d'inscription
vendredi 17 novembre 2006
Dernière intervention
28 avril 2008
0
Merci
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.
Commenter la réponse de _Fabien
Messages postés
55
Date d'inscription
lundi 3 mars 2008
Dernière intervention
17 avril 2008
0
Merci
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
Commenter la réponse de Lunikmarty
Messages postés
55
Date d'inscription
lundi 3 mars 2008
Dernière intervention
17 avril 2008
0
Merci
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.
Commenter la réponse de Lunikmarty

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.