Incrementation dans un loop [Résolu]

zebiker 34 Messages postés vendredi 10 janvier 2003Date d'inscription 12 novembre 2008 Dernière intervention - 6 mars 2008 à 15:59 - Dernière réponse : Lunikmarty 55 Messages postés lundi 3 mars 2008Date d'inscription 17 avril 2008 Dernière intervention
- 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
cs_lim 329 Messages postés jeudi 20 novembre 2003Date d'inscription 10 mai 2014 Dernière intervention - 6 mars 2008 à 16:19
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

Merci cs_lim 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 101 internautes ce mois-ci

Commenter la réponse de cs_lim
NHenry 14281 Messages postés vendredi 14 mars 2003Date d'inscription 23 octobre 2018 Dernière intervention - 6 mars 2008 à 16:22
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
_Fabien 119 Messages postés vendredi 17 novembre 2006Date d'inscription 28 avril 2008 Dernière intervention - 6 mars 2008 à 17:32
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
Lunikmarty 55 Messages postés lundi 3 mars 2008Date d'inscription 17 avril 2008 Dernière intervention - 6 mars 2008 à 23:00
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
Lunikmarty 55 Messages postés lundi 3 mars 2008Date d'inscription 17 avril 2008 Dernière intervention - 6 mars 2008 à 23:07
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.