Ouverture d'un gros fichier .txt et l'afficher rapidement sur une 'form'
kinouseba
Messages postés34Date d'inscriptionmercredi 26 janvier 2005StatutMembreDernière intervention 8 juillet 2009
-
12 oct. 2005 à 18:39
crenaud76
Messages postés4172Date d'inscriptionmercredi 30 juillet 2003StatutMembreDernière intervention 9 juin 2006
-
13 oct. 2005 à 17:49
Bonjour à tous,
je souhaite ouvrir un fichier .txt (qui fait environ 18Mo) et afficher son contenu à l'écran (avec une scrollbar verticale !), le tout sur ma 'form' principale et en un temps record !!!!!!
J'ai essayé le TextBox avec un truc du style:
open fichier for input as #1
text1.text=""
do while not eof(1)
doevents
line input #1,data
text1.text=text1.text+data+chr$(13)+chr$(10)
loop
close #1
Mais c'est vraiment trop long, d'autant plus que visiblement, le TextBox a un nombre limité de ligne.
Ensuite, j'ai ouvert un fichier WORD:
Dim wordApp As Word.Application
Set wordApp = CreateObject("Word.application")
wordApp.Visible = True
wordApp.Documents.Open ("c:\fichier.txt")
Ca me convient, c'est assez rapide, mais le fichier s'ouvre sur une autre 'form'.
Comment faire pour qu'il apparaisse sur ma 'form' principale ?
Existe-t-il un composant WORD (ou equivalent) que je pourrais mattre sur ma 'form' ?
Merci de votre aide.
Sébastien
A voir également:
Ouverture d'un gros fichier .txt et l'afficher rapidement sur une 'form'
olixelle
Messages postés506Date d'inscriptionvendredi 30 juillet 2004StatutMembreDernière intervention 3 mars 20082 12 oct. 2005 à 19:21
un premier indice est que ta boucle lit ligne à ligne, ce qui peut etre un peu long... esssaye de le lire en binaire en précisant une taille assez importante sur les paquets... t'auras moins de répétition et ca devrait etre plius rapide
cs_rt15
Messages postés3874Date d'inscriptionmardi 8 mars 2005StatutModérateurDernière intervention 7 novembre 201413 12 oct. 2005 à 19:30
Le problème peut aussi venir de l'affichage.
Il ne faut pas que la form soit redessinée à chaque ajout de ligne.
Utilise la propriété autoredraw de la form (Je suis pas sûr que ça marche).
Supprime aussi le DoEvents si tu peux, pour voir si c'est plus rapide...
Ou fait ta chaîne avant de l'afficher.
open fichier for input as #1
chaîne=""
do while not eof(1)
doevents
line input #1,data
chaîne=chaîne+data+chr$(13)+chr$(10)
loop
close #1
text1.text=chaîne
cs_CanisLupus
Messages postés3757Date d'inscriptionmardi 23 septembre 2003StatutMembreDernière intervention13 mars 200621 12 oct. 2005 à 20:18
Salut, la méthode de crenaurd76 est de loin la plus rapide.
J'ajouterai simplement qu'il faut que tu la propriété multiline de la textbox soit tru et que la propriété scrollbar soit à both.
Ou alors tu utilises le composant "Microsoft Rich textbox" avec la propriété scrollbars = rtfboth.
-------------------------------------------------
Dresseur de puces, .... normal pour un loup !?
Vous n’avez pas trouvé la réponse que vous recherchez ?
crenaud76
Messages postés4172Date d'inscriptionmercredi 30 juillet 2003StatutMembreDernière intervention 9 juin 200628 13 oct. 2005 à 17:49
Avec un tichtextbox on ferait juste RichTextBox1.LoadFile("Fichier.txt"), mais suis pas sûr que cela soit plus rapide qu'avec la textbox toute simple. Autre truc pour accélérer le code ... masquer la textbox avant le remplissage et l'afficher juste après.
With Text1
.Visible = False
Open "fichier.text For Input As #1
.Text=Input(Lof(1),1)
.Visible = True
Close #1
End With
Pas sûr que cela fasse gagner bcp, mais dans l'absolu, on y gagne sur un très gros fichier.