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 .
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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
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 .
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 .