Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Pb Affichage dans une boucle ?

1 réponse
Avatar
Laurent
Bonjour à tous,

Je lis un fichier TXT ligne par ligne et je voudrais
afficher dans la meme fenetre (ou une autre fenetre)
des informations pour l'utilisateur. Voici mon code :

Me.OpenFileDialog1.Title = " Sélection d'un fichier AIS "
Me.OpenFileDialog1.Filter = "txt files (*.txt)|*.txt"
If Me.OpenFileDialog1.ShowDialog() = System.Windows.Forms.DialogResult.OK Then
' Ouverture du fichier
Dim Fichier As StreamReader = New
StreamReader(Me.OpenFileDialog1.OpenFile())
Form_Info_Processus.ProgressBar.Maximum = Fichier.BaseStream.Length
Form_Info_Processus.Show()
While Fichier.EndOfStream = False
If String.IsNullOrEmpty(Fichier.ReadLine()) = False Then
Form_Info_Processus.ListBox1.Items.Add(Fichier.ReadLine())
Form_Info_Processus.ProgressBar.Increment(Fichier.BaseStream.Position

End If
End While
Fichier.Close()
Else
MsgBox("Aucun fichier sélectionné", MsgBoxStyle.Exclamation, "Aucun
Fichier")
End If

Pour résumer , j'affiche pour chaque ligne lu , son contenu dans
une liste box et j'incrémente de 1 la barre de progression.

Mes pbs sont les suivants :

1--> Tous s'affiche d'un seule coup , la fenetre d'information
s'affiche d'un seul coup , l'utilisateur ne voit pas le déroulement
du processus ligne par ligne.
Comment puis je resoudre ce probleme ?

2--> Lorsque je choisi mon vrai fichier TXT que je dois traiter
rien ne marche il fait 50 Mo, tous ce plante avec l'erreur sur ma
boucle while disant que Fichier.ReadLine()) = Nothing se qui ne devrait jamais
arriver comme mon While est While Fichier.EndOfStream = False ????
Je n'ai aucune idée pour resoudre se Pb ?

Merci d'avance de m'aider , car je suis à cours d'idée .

laurent

1 réponse

Avatar
Sebdraluorg
Salut,

Si tu veux que l'utilisateur puisse voir l'affichage en "temps ree;", mets
un petit application.doevents dans ta boucle..

Par contre pour un fichier de 50Mo la ca risque de faire tres long avec un
doevents...

perso moi je les traiterai par paquet de 10 de 100 lignes...

Exemple:

Dim StrVar as string
dim StrVarArray(100) as string
Dim Fichier As StreamReader = New
StreamReader(Me.OpenFileDialog1.OpenFile())
Form_Info_Processus.ProgressBar.Maximum = Fichier.BaseStream.Length
Form_Info_Processus.Show()
While Fichier.EndOfStream = False
If String.IsNullOrEmpty(Fichier.ReadLine()) = False Then
SrtVarArray(i) = Fichier.ReadLine()

if i = 100 then
for each StrVar in SrtVarArray
Form_Info_Processus.ListBox1.Items.Add(StrVar)
next
i = 0
redim SrtVarArray(100)
Application.Doevents
end if
i += 1

End If
End While
Fichier.Close()





"Laurent" a écrit :

Bonjour à tous,

Je lis un fichier TXT ligne par ligne et je voudrais
afficher dans la meme fenetre (ou une autre fenetre)
des informations pour l'utilisateur. Voici mon code :

Me.OpenFileDialog1.Title = " Sélection d'un fichier AIS "
Me.OpenFileDialog1.Filter = "txt files (*.txt)|*.txt"
If Me.OpenFileDialog1.ShowDialog() = System.Windows.Forms.DialogResult.OK Then
' Ouverture du fichier
Dim Fichier As StreamReader = New
StreamReader(Me.OpenFileDialog1.OpenFile())
Form_Info_Processus.ProgressBar.Maximum = Fichier.BaseStream.Length
Form_Info_Processus.Show()
While Fichier.EndOfStream = False
If String.IsNullOrEmpty(Fichier.ReadLine()) = False Then
Form_Info_Processus.ListBox1.Items.Add(Fichier.ReadLine())
Form_Info_Processus.ProgressBar.Increment(Fichier.BaseStream.Position

End If
End While
Fichier.Close()
Else
MsgBox("Aucun fichier sélectionné", MsgBoxStyle.Exclamation, "Aucun
Fichier")
End If

Pour résumer , j'affiche pour chaque ligne lu , son contenu dans
une liste box et j'incrémente de 1 la barre de progression.

Mes pbs sont les suivants :

1--> Tous s'affiche d'un seule coup , la fenetre d'information
s'affiche d'un seul coup , l'utilisateur ne voit pas le déroulement
du processus ligne par ligne.
Comment puis je resoudre ce probleme ?

2--> Lorsque je choisi mon vrai fichier TXT que je dois traiter
rien ne marche il fait 50 Mo, tous ce plante avec l'erreur sur ma
boucle while disant que Fichier.ReadLine()) = Nothing se qui ne devrait jamais
arriver comme mon While est While Fichier.EndOfStream = False ????
Je n'ai aucune idée pour resoudre se Pb ?

Merci d'avance de m'aider , car je suis à cours d'idée .

laurent