Rosalie Mignon wrote:Bonjour
Bonjour,Je vais donc m'orienter vers le Textbox.
En fait, j'ai deux fichiers de 5 Mo environ a traiter en meme temps.
Pour chacun des fichiers, je dois realiser un affichage simultane a
l'ecran suivant un filtre predetermine
OK.puis, suivant la saisie eventuelle de l'utilisateur, refiltrer a
nouveau ces fichiers a la recherche des nouvelles infos
et les afficher.
OKSauriez vous m'indiquer un moyen plus rapide que le classique mais
efficace Pour un fichier
lire la ligne (line input)
recherche des occurrences (instr)
affichage de la ligne eventuel (gestion de la textbox)
Fichier suivant
Il y a effectivement un moyen plus "rapide". Ce moyen est décrit ici
dans cet article de la FAQ:
http://faq.vb.free.fr/index.php?question5
Le principe est de tout lire dans un buffer puis d'utiliser Split()
pour faire un tableau de lignes. On parcourt ensuie ce tableau
et on filtre avec Instr().
Le gain en temps devrait déjà être substantiel.
Pour des fichiers de l'ordre de 5 Mo, cette méthode est applicable et
tout à fait suffisante.
Pour de plus gros fichiers ou pour gagner encore en vitesse et en fluidité
(partage du boulot entre le controlleur de disque et le processeur), il
existe
encore d'autres techniques, un peu plus compliquées à mettre en oeuvre.
Sans doute pas nécessaire ici.
--
Jean-marc Noury (jean_marc_n2)
FAQ VB: http://faq.vb.free.fr/
mailto: remove '_no_spam_' ;
Rosalie Mignon wrote:
Bonjour
Bonjour,
Je vais donc m'orienter vers le Textbox.
En fait, j'ai deux fichiers de 5 Mo environ a traiter en meme temps.
Pour chacun des fichiers, je dois realiser un affichage simultane a
l'ecran suivant un filtre predetermine
OK.
puis, suivant la saisie eventuelle de l'utilisateur, refiltrer a
nouveau ces fichiers a la recherche des nouvelles infos
et les afficher.
OK
Sauriez vous m'indiquer un moyen plus rapide que le classique mais
efficace Pour un fichier
lire la ligne (line input)
recherche des occurrences (instr)
affichage de la ligne eventuel (gestion de la textbox)
Fichier suivant
Il y a effectivement un moyen plus "rapide". Ce moyen est décrit ici
dans cet article de la FAQ:
http://faq.vb.free.fr/index.php?question5
Le principe est de tout lire dans un buffer puis d'utiliser Split()
pour faire un tableau de lignes. On parcourt ensuie ce tableau
et on filtre avec Instr().
Le gain en temps devrait déjà être substantiel.
Pour des fichiers de l'ordre de 5 Mo, cette méthode est applicable et
tout à fait suffisante.
Pour de plus gros fichiers ou pour gagner encore en vitesse et en fluidité
(partage du boulot entre le controlleur de disque et le processeur), il
existe
encore d'autres techniques, un peu plus compliquées à mettre en oeuvre.
Sans doute pas nécessaire ici.
--
Jean-marc Noury (jean_marc_n2)
FAQ VB: http://faq.vb.free.fr/
mailto: remove '_no_spam_' ; _no_spam_jean_marc_n2@yahoo.fr
Rosalie Mignon wrote:Bonjour
Bonjour,Je vais donc m'orienter vers le Textbox.
En fait, j'ai deux fichiers de 5 Mo environ a traiter en meme temps.
Pour chacun des fichiers, je dois realiser un affichage simultane a
l'ecran suivant un filtre predetermine
OK.puis, suivant la saisie eventuelle de l'utilisateur, refiltrer a
nouveau ces fichiers a la recherche des nouvelles infos
et les afficher.
OKSauriez vous m'indiquer un moyen plus rapide que le classique mais
efficace Pour un fichier
lire la ligne (line input)
recherche des occurrences (instr)
affichage de la ligne eventuel (gestion de la textbox)
Fichier suivant
Il y a effectivement un moyen plus "rapide". Ce moyen est décrit ici
dans cet article de la FAQ:
http://faq.vb.free.fr/index.php?question5
Le principe est de tout lire dans un buffer puis d'utiliser Split()
pour faire un tableau de lignes. On parcourt ensuie ce tableau
et on filtre avec Instr().
Le gain en temps devrait déjà être substantiel.
Pour des fichiers de l'ordre de 5 Mo, cette méthode est applicable et
tout à fait suffisante.
Pour de plus gros fichiers ou pour gagner encore en vitesse et en fluidité
(partage du boulot entre le controlleur de disque et le processeur), il
existe
encore d'autres techniques, un peu plus compliquées à mettre en oeuvre.
Sans doute pas nécessaire ici.
--
Jean-marc Noury (jean_marc_n2)
FAQ VB: http://faq.vb.free.fr/
mailto: remove '_no_spam_' ;
Cher Jean-Marc,
Oui chef, tu dois parler de split, d'une lecture RAM, moi je te
parle d'une lecture séquentielle sur disque avec plusieurs tests (une
dizaine par ligne) afin de chercher les rimes, puis chargement en
liste, ce qui explique le temps.
Il est certain qu'en RAM ça va plus vite, puisque sur disque nous
sommes à 7 ms environ,
toutefois et pour l'exemple, j'ai un vieux
notebook PC de 400 Mo de RAM avec XPsp2Pro;
ben je peux te dire que
si tu lui réquisition 50 mo sur ses 400, il risque de ne pas aimer,
Si à l'origine des fichiers on a fait des constructions à deux
fichier pour indexer les datas, voire trois fichiers afin de faire un
multicritère (qui devient de facto quasiment un BDD), c'est peut être
qu'il y avait une raison,
la raison est celle que si tu mets en RAM
comme tu veux le faire, 500 Mo,
et que tous tes programmes sont
ainsi, si jamais plusieurs tournent en même temps, tu risques de te
retrouver en pseudo-mémoire sur disque (qui naguère faisait un
dépassement de capacité de la RAM).
Je crois que comme je dis "il faut voir", l'indexé et le
multicritères est une excellente solution avec des datas fixes,
car au pointeur ça va quand même vite sur le disque,
toutefois, comme tu
le remarques, c'est davantage pour les fichiers qu'on a pas trop
souvent à réindexer, voire jamais, sinon on perd le bénéfice de la
structure.
Et la mémoire, c'est en fonction des sa taille et des
programme qui y accèdent, ou alors on fait le fichier en RAM par
morceaux.
Pour l'anecdote, quand j'étais sous Prologue-Bull France en OS
BAL, il y avait des truc merveilleux, que Microsoft n'a même pas
pompé, s'ajustant simplement au CPM (8.3), en effet :
Et bien, tout ça pour dire que c'est dommage que ce ne soit pas aussi
simple, c'était, c'est Français, mais on ne sait pas vendre, alors MS
a réussi lui, à vendre un système de gestion des fichiers quatre fois
moins performant, lamentable !
Pour ma part, in fine, je dirais que le choix doit s'opérer en
fonction des critères sus-cités, et non pas être systématique.
Je rends désormais ma copie au chef,
qui va se faire une joie de l'annoter.
Cordialement ;o)
Cher Jean-Marc,
Oui chef, tu dois parler de split, d'une lecture RAM, moi je te
parle d'une lecture séquentielle sur disque avec plusieurs tests (une
dizaine par ligne) afin de chercher les rimes, puis chargement en
liste, ce qui explique le temps.
Il est certain qu'en RAM ça va plus vite, puisque sur disque nous
sommes à 7 ms environ,
toutefois et pour l'exemple, j'ai un vieux
notebook PC de 400 Mo de RAM avec XPsp2Pro;
ben je peux te dire que
si tu lui réquisition 50 mo sur ses 400, il risque de ne pas aimer,
Si à l'origine des fichiers on a fait des constructions à deux
fichier pour indexer les datas, voire trois fichiers afin de faire un
multicritère (qui devient de facto quasiment un BDD), c'est peut être
qu'il y avait une raison,
la raison est celle que si tu mets en RAM
comme tu veux le faire, 500 Mo,
et que tous tes programmes sont
ainsi, si jamais plusieurs tournent en même temps, tu risques de te
retrouver en pseudo-mémoire sur disque (qui naguère faisait un
dépassement de capacité de la RAM).
Je crois que comme je dis "il faut voir", l'indexé et le
multicritères est une excellente solution avec des datas fixes,
car au pointeur ça va quand même vite sur le disque,
toutefois, comme tu
le remarques, c'est davantage pour les fichiers qu'on a pas trop
souvent à réindexer, voire jamais, sinon on perd le bénéfice de la
structure.
Et la mémoire, c'est en fonction des sa taille et des
programme qui y accèdent, ou alors on fait le fichier en RAM par
morceaux.
Pour l'anecdote, quand j'étais sous Prologue-Bull France en OS
BAL, il y avait des truc merveilleux, que Microsoft n'a même pas
pompé, s'ajustant simplement au CPM (8.3), en effet :
Et bien, tout ça pour dire que c'est dommage que ce ne soit pas aussi
simple, c'était, c'est Français, mais on ne sait pas vendre, alors MS
a réussi lui, à vendre un système de gestion des fichiers quatre fois
moins performant, lamentable !
Pour ma part, in fine, je dirais que le choix doit s'opérer en
fonction des critères sus-cités, et non pas être systématique.
Je rends désormais ma copie au chef,
qui va se faire une joie de l'annoter.
Cordialement ;o)
Cher Jean-Marc,
Oui chef, tu dois parler de split, d'une lecture RAM, moi je te
parle d'une lecture séquentielle sur disque avec plusieurs tests (une
dizaine par ligne) afin de chercher les rimes, puis chargement en
liste, ce qui explique le temps.
Il est certain qu'en RAM ça va plus vite, puisque sur disque nous
sommes à 7 ms environ,
toutefois et pour l'exemple, j'ai un vieux
notebook PC de 400 Mo de RAM avec XPsp2Pro;
ben je peux te dire que
si tu lui réquisition 50 mo sur ses 400, il risque de ne pas aimer,
Si à l'origine des fichiers on a fait des constructions à deux
fichier pour indexer les datas, voire trois fichiers afin de faire un
multicritère (qui devient de facto quasiment un BDD), c'est peut être
qu'il y avait une raison,
la raison est celle que si tu mets en RAM
comme tu veux le faire, 500 Mo,
et que tous tes programmes sont
ainsi, si jamais plusieurs tournent en même temps, tu risques de te
retrouver en pseudo-mémoire sur disque (qui naguère faisait un
dépassement de capacité de la RAM).
Je crois que comme je dis "il faut voir", l'indexé et le
multicritères est une excellente solution avec des datas fixes,
car au pointeur ça va quand même vite sur le disque,
toutefois, comme tu
le remarques, c'est davantage pour les fichiers qu'on a pas trop
souvent à réindexer, voire jamais, sinon on perd le bénéfice de la
structure.
Et la mémoire, c'est en fonction des sa taille et des
programme qui y accèdent, ou alors on fait le fichier en RAM par
morceaux.
Pour l'anecdote, quand j'étais sous Prologue-Bull France en OS
BAL, il y avait des truc merveilleux, que Microsoft n'a même pas
pompé, s'ajustant simplement au CPM (8.3), en effet :
Et bien, tout ça pour dire que c'est dommage que ce ne soit pas aussi
simple, c'était, c'est Français, mais on ne sait pas vendre, alors MS
a réussi lui, à vendre un système de gestion des fichiers quatre fois
moins performant, lamentable !
Pour ma part, in fine, je dirais que le choix doit s'opérer en
fonction des critères sus-cités, et non pas être systématique.
Je rends désormais ma copie au chef,
qui va se faire une joie de l'annoter.
Cordialement ;o)
Bonjour
Merci beaucoup pour toutes vos explications.
Je vais essayer ce que vous preconisez.
Bonjour
Merci beaucoup pour toutes vos explications.
Je vais essayer ce que vous preconisez.
Bonjour
Merci beaucoup pour toutes vos explications.
Je vais essayer ce que vous preconisez.
Rosalie Mignon wrote:Bonjour
Merci beaucoup pour toutes vos explications.
Je vais essayer ce que vous preconisez.
Pour info, j'ai fait un petit test:
J'ai généré un fichier test de 6 Mo, contenant 50000 lignes
de plus ou moins 100 caractères. Parmi ces lignes, une centaine
contiennent un certain pattern que je veux rechercher.
J'ai réalisé ensuite 2 fonctions, faisant la même chose, à savoir:
- lecture du fichier
- examen des lignes à la recherche du pattern à trouver
- quand pattern trouvé, ajout à une textBox multiligne
La différence entre les 2 fonctions est que :
- la première fait une lecture basique, ligne à ligne
- la seconde fait une lecture d'un bloc et traite le
tout en mémoire.
La première fonction fait le travail en 320 milisecondes
La seconde fonction ne prend que 270 milisecondes
Dans les 2 cas, les performances sont excellentes puisque
finalement, le tout prend moins d'un tiers de seconde :
c'est presque invisible pour l'oeil.
Le traitement en parallèle de 2 fichiers va donc prendre
2 fois plus de temps, soit plus ou moins 500 à 600 milisecondes.
On reste bien inférieur à une seconde, ce qui est fort acceptable
pour ce genre de programme : l'utilisateur n'a même pas le temps
de penser à se lever pour aller prendre un café!
Pour info, voici mon prgramme de test.
Il faut 3 boutons de commandes :
Command1 est utilisé pour générer le fichier de test
Command2 applique le filtre à la mode "lecture Line Input"
Command3 applique le filtre à la mode "lecture en mémoire"
Et un TextBox (text1), propriété "Multiline" = True
Voici :
' 8<-----------------------------------
Option Explicit
Private Declare Function QueryPerformanceCounter _
Lib "Kernel32" (X As Currency) As Boolean
Private Declare Function QueryPerformanceFrequency _
Lib "Kernel32" (X As Currency) As Boolean
Private Sub Command1_Click()
Dim f As Integer
Dim s As String
Dim r As Long
Dim i As Long
f = FreeFile
Open "c:test.dat" For Output As #f
For i = 1 To 50000
r = Int(Rnd * 1000) + 1
If r = 998 Then
s = "XXXX HELLO WORLD XXX"
ElseIf r = 999 Then
s = "XXXX COUCOU LES AMIS XXX"
Else
s = String(Rnd * 50 + 100, _
Chr$(65 + Rnd * 26))
End If
Print #f, s
Next i
Close #f
End Sub
Private Sub Command2_Click()
Dim f As Integer
Dim pattern As String
Dim n As Long
Dim s As String
Dim Ctr1 As Currency, Ctr2 As Currency
Dim Freq As Currency
pattern = "HELLO WORLD"
QueryPerformanceCounter Ctr1
Text1.Text = ""
Text1.Enabled = False
f = FreeFile
Open "c:test.dat" For Input As #f
While Not EOF(f)
n = n + 1
Line Input #f, s
If InStr(s, pattern) > 0 Then
Text1.Text = Text1.Text & n _
& vbTab & s & vbCrLf
End If
Wend
Close #f
Text1.Enabled = True
QueryPerformanceCounter Ctr2
QueryPerformanceFrequency Freq
MsgBox "Temps écoulé : " & _
((Ctr2 - Ctr1) / Freq) * 1000 & " millisecondes"
End Sub
Private Sub Command3_Click()
Dim f As Integer
Dim pattern As String
Dim buffer As String
Dim t() As String
Dim i As Long
Dim Ctr1 As Currency, Ctr2 As Currency
Dim Freq As Currency
pattern = "HELLO WORLD"
QueryPerformanceCounter Ctr1
Text1.Text = ""
Text1.Enabled = False
f = FreeFile
Open "c:test.dat" For Binary As #f
buffer = Space$(LOF(f))
Get #f, , buffer
Close #f
t() = Split(buffer, vbCrLf)
For i = LBound(t()) To UBound(t())
If InStr(t(i), pattern) > 0 Then
Text1.Text = Text1.Text & i & _
vbTab & t(i) & vbCrLf
End If
Next i
Text1.Enabled = True
QueryPerformanceCounter Ctr2
QueryPerformanceFrequency Freq
MsgBox "Temps écoulé : " & _
((Ctr2 - Ctr1) / Freq) * 1000 & " millisecondes"
End Sub
' 8<----------------------------------------
Cordialement,
--
Jean-marc Noury (jean_marc_n2)
FAQ VB: http://faq.vb.free.fr/
mailto: remove '_no_spam_' ;
Rosalie Mignon wrote:
Bonjour
Merci beaucoup pour toutes vos explications.
Je vais essayer ce que vous preconisez.
Pour info, j'ai fait un petit test:
J'ai généré un fichier test de 6 Mo, contenant 50000 lignes
de plus ou moins 100 caractères. Parmi ces lignes, une centaine
contiennent un certain pattern que je veux rechercher.
J'ai réalisé ensuite 2 fonctions, faisant la même chose, à savoir:
- lecture du fichier
- examen des lignes à la recherche du pattern à trouver
- quand pattern trouvé, ajout à une textBox multiligne
La différence entre les 2 fonctions est que :
- la première fait une lecture basique, ligne à ligne
- la seconde fait une lecture d'un bloc et traite le
tout en mémoire.
La première fonction fait le travail en 320 milisecondes
La seconde fonction ne prend que 270 milisecondes
Dans les 2 cas, les performances sont excellentes puisque
finalement, le tout prend moins d'un tiers de seconde :
c'est presque invisible pour l'oeil.
Le traitement en parallèle de 2 fichiers va donc prendre
2 fois plus de temps, soit plus ou moins 500 à 600 milisecondes.
On reste bien inférieur à une seconde, ce qui est fort acceptable
pour ce genre de programme : l'utilisateur n'a même pas le temps
de penser à se lever pour aller prendre un café!
Pour info, voici mon prgramme de test.
Il faut 3 boutons de commandes :
Command1 est utilisé pour générer le fichier de test
Command2 applique le filtre à la mode "lecture Line Input"
Command3 applique le filtre à la mode "lecture en mémoire"
Et un TextBox (text1), propriété "Multiline" = True
Voici :
' 8<-----------------------------------
Option Explicit
Private Declare Function QueryPerformanceCounter _
Lib "Kernel32" (X As Currency) As Boolean
Private Declare Function QueryPerformanceFrequency _
Lib "Kernel32" (X As Currency) As Boolean
Private Sub Command1_Click()
Dim f As Integer
Dim s As String
Dim r As Long
Dim i As Long
f = FreeFile
Open "c:test.dat" For Output As #f
For i = 1 To 50000
r = Int(Rnd * 1000) + 1
If r = 998 Then
s = "XXXX HELLO WORLD XXX"
ElseIf r = 999 Then
s = "XXXX COUCOU LES AMIS XXX"
Else
s = String(Rnd * 50 + 100, _
Chr$(65 + Rnd * 26))
End If
Print #f, s
Next i
Close #f
End Sub
Private Sub Command2_Click()
Dim f As Integer
Dim pattern As String
Dim n As Long
Dim s As String
Dim Ctr1 As Currency, Ctr2 As Currency
Dim Freq As Currency
pattern = "HELLO WORLD"
QueryPerformanceCounter Ctr1
Text1.Text = ""
Text1.Enabled = False
f = FreeFile
Open "c:test.dat" For Input As #f
While Not EOF(f)
n = n + 1
Line Input #f, s
If InStr(s, pattern) > 0 Then
Text1.Text = Text1.Text & n _
& vbTab & s & vbCrLf
End If
Wend
Close #f
Text1.Enabled = True
QueryPerformanceCounter Ctr2
QueryPerformanceFrequency Freq
MsgBox "Temps écoulé : " & _
((Ctr2 - Ctr1) / Freq) * 1000 & " millisecondes"
End Sub
Private Sub Command3_Click()
Dim f As Integer
Dim pattern As String
Dim buffer As String
Dim t() As String
Dim i As Long
Dim Ctr1 As Currency, Ctr2 As Currency
Dim Freq As Currency
pattern = "HELLO WORLD"
QueryPerformanceCounter Ctr1
Text1.Text = ""
Text1.Enabled = False
f = FreeFile
Open "c:test.dat" For Binary As #f
buffer = Space$(LOF(f))
Get #f, , buffer
Close #f
t() = Split(buffer, vbCrLf)
For i = LBound(t()) To UBound(t())
If InStr(t(i), pattern) > 0 Then
Text1.Text = Text1.Text & i & _
vbTab & t(i) & vbCrLf
End If
Next i
Text1.Enabled = True
QueryPerformanceCounter Ctr2
QueryPerformanceFrequency Freq
MsgBox "Temps écoulé : " & _
((Ctr2 - Ctr1) / Freq) * 1000 & " millisecondes"
End Sub
' 8<----------------------------------------
Cordialement,
--
Jean-marc Noury (jean_marc_n2)
FAQ VB: http://faq.vb.free.fr/
mailto: remove '_no_spam_' ; _no_spam_jean_marc_n2@yahoo.fr
Rosalie Mignon wrote:Bonjour
Merci beaucoup pour toutes vos explications.
Je vais essayer ce que vous preconisez.
Pour info, j'ai fait un petit test:
J'ai généré un fichier test de 6 Mo, contenant 50000 lignes
de plus ou moins 100 caractères. Parmi ces lignes, une centaine
contiennent un certain pattern que je veux rechercher.
J'ai réalisé ensuite 2 fonctions, faisant la même chose, à savoir:
- lecture du fichier
- examen des lignes à la recherche du pattern à trouver
- quand pattern trouvé, ajout à une textBox multiligne
La différence entre les 2 fonctions est que :
- la première fait une lecture basique, ligne à ligne
- la seconde fait une lecture d'un bloc et traite le
tout en mémoire.
La première fonction fait le travail en 320 milisecondes
La seconde fonction ne prend que 270 milisecondes
Dans les 2 cas, les performances sont excellentes puisque
finalement, le tout prend moins d'un tiers de seconde :
c'est presque invisible pour l'oeil.
Le traitement en parallèle de 2 fichiers va donc prendre
2 fois plus de temps, soit plus ou moins 500 à 600 milisecondes.
On reste bien inférieur à une seconde, ce qui est fort acceptable
pour ce genre de programme : l'utilisateur n'a même pas le temps
de penser à se lever pour aller prendre un café!
Pour info, voici mon prgramme de test.
Il faut 3 boutons de commandes :
Command1 est utilisé pour générer le fichier de test
Command2 applique le filtre à la mode "lecture Line Input"
Command3 applique le filtre à la mode "lecture en mémoire"
Et un TextBox (text1), propriété "Multiline" = True
Voici :
' 8<-----------------------------------
Option Explicit
Private Declare Function QueryPerformanceCounter _
Lib "Kernel32" (X As Currency) As Boolean
Private Declare Function QueryPerformanceFrequency _
Lib "Kernel32" (X As Currency) As Boolean
Private Sub Command1_Click()
Dim f As Integer
Dim s As String
Dim r As Long
Dim i As Long
f = FreeFile
Open "c:test.dat" For Output As #f
For i = 1 To 50000
r = Int(Rnd * 1000) + 1
If r = 998 Then
s = "XXXX HELLO WORLD XXX"
ElseIf r = 999 Then
s = "XXXX COUCOU LES AMIS XXX"
Else
s = String(Rnd * 50 + 100, _
Chr$(65 + Rnd * 26))
End If
Print #f, s
Next i
Close #f
End Sub
Private Sub Command2_Click()
Dim f As Integer
Dim pattern As String
Dim n As Long
Dim s As String
Dim Ctr1 As Currency, Ctr2 As Currency
Dim Freq As Currency
pattern = "HELLO WORLD"
QueryPerformanceCounter Ctr1
Text1.Text = ""
Text1.Enabled = False
f = FreeFile
Open "c:test.dat" For Input As #f
While Not EOF(f)
n = n + 1
Line Input #f, s
If InStr(s, pattern) > 0 Then
Text1.Text = Text1.Text & n _
& vbTab & s & vbCrLf
End If
Wend
Close #f
Text1.Enabled = True
QueryPerformanceCounter Ctr2
QueryPerformanceFrequency Freq
MsgBox "Temps écoulé : " & _
((Ctr2 - Ctr1) / Freq) * 1000 & " millisecondes"
End Sub
Private Sub Command3_Click()
Dim f As Integer
Dim pattern As String
Dim buffer As String
Dim t() As String
Dim i As Long
Dim Ctr1 As Currency, Ctr2 As Currency
Dim Freq As Currency
pattern = "HELLO WORLD"
QueryPerformanceCounter Ctr1
Text1.Text = ""
Text1.Enabled = False
f = FreeFile
Open "c:test.dat" For Binary As #f
buffer = Space$(LOF(f))
Get #f, , buffer
Close #f
t() = Split(buffer, vbCrLf)
For i = LBound(t()) To UBound(t())
If InStr(t(i), pattern) > 0 Then
Text1.Text = Text1.Text & i & _
vbTab & t(i) & vbCrLf
End If
Next i
Text1.Enabled = True
QueryPerformanceCounter Ctr2
QueryPerformanceFrequency Freq
MsgBox "Temps écoulé : " & _
((Ctr2 - Ctr1) / Freq) * 1000 & " millisecondes"
End Sub
' 8<----------------------------------------
Cordialement,
--
Jean-marc Noury (jean_marc_n2)
FAQ VB: http://faq.vb.free.fr/
mailto: remove '_no_spam_' ;
Bonjour
Effectivement j'ai pu le constater en m'inspirant de vos exemples.
Par contre, si on imaginait que les lignes filtrees seraient plus
nombreuses que prevues (non plus une dizaine mais inconnues)
et depassent la capacite du Textbox, je serai donc oblige de passer sur un
Richbox, n'est ce pas ?
Je cree donc un fichier resultat pour pouvoir utiliser Richbox.loadfile,
exact ?
"Jean-marc" a écrit dans le message de news:
4b84414e$0$2864$Rosalie Mignon wrote:Bonjour
Merci beaucoup pour toutes vos explications.
Je vais essayer ce que vous preconisez.
Pour info, j'ai fait un petit test:
J'ai généré un fichier test de 6 Mo, contenant 50000 lignes
de plus ou moins 100 caractères. Parmi ces lignes, une centaine
contiennent un certain pattern que je veux rechercher.
J'ai réalisé ensuite 2 fonctions, faisant la même chose, à savoir:
- lecture du fichier
- examen des lignes à la recherche du pattern à trouver
- quand pattern trouvé, ajout à une textBox multiligne
La différence entre les 2 fonctions est que :
- la première fait une lecture basique, ligne à ligne
- la seconde fait une lecture d'un bloc et traite le
tout en mémoire.
La première fonction fait le travail en 320 milisecondes
La seconde fonction ne prend que 270 milisecondes
Dans les 2 cas, les performances sont excellentes puisque
finalement, le tout prend moins d'un tiers de seconde :
c'est presque invisible pour l'oeil.
Le traitement en parallèle de 2 fichiers va donc prendre
2 fois plus de temps, soit plus ou moins 500 à 600 milisecondes.
On reste bien inférieur à une seconde, ce qui est fort acceptable
pour ce genre de programme : l'utilisateur n'a même pas le temps
de penser à se lever pour aller prendre un café!
Pour info, voici mon prgramme de test.
Il faut 3 boutons de commandes :
Command1 est utilisé pour générer le fichier de test
Command2 applique le filtre à la mode "lecture Line Input"
Command3 applique le filtre à la mode "lecture en mémoire"
Et un TextBox (text1), propriété "Multiline" = True
Voici :
' 8<-----------------------------------
Option Explicit
Private Declare Function QueryPerformanceCounter _
Lib "Kernel32" (X As Currency) As Boolean
Private Declare Function QueryPerformanceFrequency _
Lib "Kernel32" (X As Currency) As Boolean
Private Sub Command1_Click()
Dim f As Integer
Dim s As String
Dim r As Long
Dim i As Long
f = FreeFile
Open "c:test.dat" For Output As #f
For i = 1 To 50000
r = Int(Rnd * 1000) + 1
If r = 998 Then
s = "XXXX HELLO WORLD XXX"
ElseIf r = 999 Then
s = "XXXX COUCOU LES AMIS XXX"
Else
s = String(Rnd * 50 + 100, _
Chr$(65 + Rnd * 26))
End If
Print #f, s
Next i
Close #f
End Sub
Private Sub Command2_Click()
Dim f As Integer
Dim pattern As String
Dim n As Long
Dim s As String
Dim Ctr1 As Currency, Ctr2 As Currency
Dim Freq As Currency
pattern = "HELLO WORLD"
QueryPerformanceCounter Ctr1
Text1.Text = ""
Text1.Enabled = False
f = FreeFile
Open "c:test.dat" For Input As #f
While Not EOF(f)
n = n + 1
Line Input #f, s
If InStr(s, pattern) > 0 Then
Text1.Text = Text1.Text & n _
& vbTab & s & vbCrLf
End If
Wend
Close #f
Text1.Enabled = True
QueryPerformanceCounter Ctr2
QueryPerformanceFrequency Freq
MsgBox "Temps écoulé : " & _
((Ctr2 - Ctr1) / Freq) * 1000 & " millisecondes"
End Sub
Private Sub Command3_Click()
Dim f As Integer
Dim pattern As String
Dim buffer As String
Dim t() As String
Dim i As Long
Dim Ctr1 As Currency, Ctr2 As Currency
Dim Freq As Currency
pattern = "HELLO WORLD"
QueryPerformanceCounter Ctr1
Text1.Text = ""
Text1.Enabled = False
f = FreeFile
Open "c:test.dat" For Binary As #f
buffer = Space$(LOF(f))
Get #f, , buffer
Close #f
t() = Split(buffer, vbCrLf)
For i = LBound(t()) To UBound(t())
If InStr(t(i), pattern) > 0 Then
Text1.Text = Text1.Text & i & _
vbTab & t(i) & vbCrLf
End If
Next i
Text1.Enabled = True
QueryPerformanceCounter Ctr2
QueryPerformanceFrequency Freq
MsgBox "Temps écoulé : " & _
((Ctr2 - Ctr1) / Freq) * 1000 & " millisecondes"
End Sub
' 8<----------------------------------------
Cordialement,
--
Jean-marc Noury (jean_marc_n2)
FAQ VB: http://faq.vb.free.fr/
mailto: remove '_no_spam_' ;
Bonjour
Effectivement j'ai pu le constater en m'inspirant de vos exemples.
Par contre, si on imaginait que les lignes filtrees seraient plus
nombreuses que prevues (non plus une dizaine mais inconnues)
et depassent la capacite du Textbox, je serai donc oblige de passer sur un
Richbox, n'est ce pas ?
Je cree donc un fichier resultat pour pouvoir utiliser Richbox.loadfile,
exact ?
"Jean-marc" <jm@nowhere.invalid> a écrit dans le message de news:
4b84414e$0$2864$ba620e4c@news.skynet.be...
Rosalie Mignon wrote:
Bonjour
Merci beaucoup pour toutes vos explications.
Je vais essayer ce que vous preconisez.
Pour info, j'ai fait un petit test:
J'ai généré un fichier test de 6 Mo, contenant 50000 lignes
de plus ou moins 100 caractères. Parmi ces lignes, une centaine
contiennent un certain pattern que je veux rechercher.
J'ai réalisé ensuite 2 fonctions, faisant la même chose, à savoir:
- lecture du fichier
- examen des lignes à la recherche du pattern à trouver
- quand pattern trouvé, ajout à une textBox multiligne
La différence entre les 2 fonctions est que :
- la première fait une lecture basique, ligne à ligne
- la seconde fait une lecture d'un bloc et traite le
tout en mémoire.
La première fonction fait le travail en 320 milisecondes
La seconde fonction ne prend que 270 milisecondes
Dans les 2 cas, les performances sont excellentes puisque
finalement, le tout prend moins d'un tiers de seconde :
c'est presque invisible pour l'oeil.
Le traitement en parallèle de 2 fichiers va donc prendre
2 fois plus de temps, soit plus ou moins 500 à 600 milisecondes.
On reste bien inférieur à une seconde, ce qui est fort acceptable
pour ce genre de programme : l'utilisateur n'a même pas le temps
de penser à se lever pour aller prendre un café!
Pour info, voici mon prgramme de test.
Il faut 3 boutons de commandes :
Command1 est utilisé pour générer le fichier de test
Command2 applique le filtre à la mode "lecture Line Input"
Command3 applique le filtre à la mode "lecture en mémoire"
Et un TextBox (text1), propriété "Multiline" = True
Voici :
' 8<-----------------------------------
Option Explicit
Private Declare Function QueryPerformanceCounter _
Lib "Kernel32" (X As Currency) As Boolean
Private Declare Function QueryPerformanceFrequency _
Lib "Kernel32" (X As Currency) As Boolean
Private Sub Command1_Click()
Dim f As Integer
Dim s As String
Dim r As Long
Dim i As Long
f = FreeFile
Open "c:test.dat" For Output As #f
For i = 1 To 50000
r = Int(Rnd * 1000) + 1
If r = 998 Then
s = "XXXX HELLO WORLD XXX"
ElseIf r = 999 Then
s = "XXXX COUCOU LES AMIS XXX"
Else
s = String(Rnd * 50 + 100, _
Chr$(65 + Rnd * 26))
End If
Print #f, s
Next i
Close #f
End Sub
Private Sub Command2_Click()
Dim f As Integer
Dim pattern As String
Dim n As Long
Dim s As String
Dim Ctr1 As Currency, Ctr2 As Currency
Dim Freq As Currency
pattern = "HELLO WORLD"
QueryPerformanceCounter Ctr1
Text1.Text = ""
Text1.Enabled = False
f = FreeFile
Open "c:test.dat" For Input As #f
While Not EOF(f)
n = n + 1
Line Input #f, s
If InStr(s, pattern) > 0 Then
Text1.Text = Text1.Text & n _
& vbTab & s & vbCrLf
End If
Wend
Close #f
Text1.Enabled = True
QueryPerformanceCounter Ctr2
QueryPerformanceFrequency Freq
MsgBox "Temps écoulé : " & _
((Ctr2 - Ctr1) / Freq) * 1000 & " millisecondes"
End Sub
Private Sub Command3_Click()
Dim f As Integer
Dim pattern As String
Dim buffer As String
Dim t() As String
Dim i As Long
Dim Ctr1 As Currency, Ctr2 As Currency
Dim Freq As Currency
pattern = "HELLO WORLD"
QueryPerformanceCounter Ctr1
Text1.Text = ""
Text1.Enabled = False
f = FreeFile
Open "c:test.dat" For Binary As #f
buffer = Space$(LOF(f))
Get #f, , buffer
Close #f
t() = Split(buffer, vbCrLf)
For i = LBound(t()) To UBound(t())
If InStr(t(i), pattern) > 0 Then
Text1.Text = Text1.Text & i & _
vbTab & t(i) & vbCrLf
End If
Next i
Text1.Enabled = True
QueryPerformanceCounter Ctr2
QueryPerformanceFrequency Freq
MsgBox "Temps écoulé : " & _
((Ctr2 - Ctr1) / Freq) * 1000 & " millisecondes"
End Sub
' 8<----------------------------------------
Cordialement,
--
Jean-marc Noury (jean_marc_n2)
FAQ VB: http://faq.vb.free.fr/
mailto: remove '_no_spam_' ; _no_spam_jean_marc_n2@yahoo.fr
Bonjour
Effectivement j'ai pu le constater en m'inspirant de vos exemples.
Par contre, si on imaginait que les lignes filtrees seraient plus
nombreuses que prevues (non plus une dizaine mais inconnues)
et depassent la capacite du Textbox, je serai donc oblige de passer sur un
Richbox, n'est ce pas ?
Je cree donc un fichier resultat pour pouvoir utiliser Richbox.loadfile,
exact ?
"Jean-marc" a écrit dans le message de news:
4b84414e$0$2864$Rosalie Mignon wrote:Bonjour
Merci beaucoup pour toutes vos explications.
Je vais essayer ce que vous preconisez.
Pour info, j'ai fait un petit test:
J'ai généré un fichier test de 6 Mo, contenant 50000 lignes
de plus ou moins 100 caractères. Parmi ces lignes, une centaine
contiennent un certain pattern que je veux rechercher.
J'ai réalisé ensuite 2 fonctions, faisant la même chose, à savoir:
- lecture du fichier
- examen des lignes à la recherche du pattern à trouver
- quand pattern trouvé, ajout à une textBox multiligne
La différence entre les 2 fonctions est que :
- la première fait une lecture basique, ligne à ligne
- la seconde fait une lecture d'un bloc et traite le
tout en mémoire.
La première fonction fait le travail en 320 milisecondes
La seconde fonction ne prend que 270 milisecondes
Dans les 2 cas, les performances sont excellentes puisque
finalement, le tout prend moins d'un tiers de seconde :
c'est presque invisible pour l'oeil.
Le traitement en parallèle de 2 fichiers va donc prendre
2 fois plus de temps, soit plus ou moins 500 à 600 milisecondes.
On reste bien inférieur à une seconde, ce qui est fort acceptable
pour ce genre de programme : l'utilisateur n'a même pas le temps
de penser à se lever pour aller prendre un café!
Pour info, voici mon prgramme de test.
Il faut 3 boutons de commandes :
Command1 est utilisé pour générer le fichier de test
Command2 applique le filtre à la mode "lecture Line Input"
Command3 applique le filtre à la mode "lecture en mémoire"
Et un TextBox (text1), propriété "Multiline" = True
Voici :
' 8<-----------------------------------
Option Explicit
Private Declare Function QueryPerformanceCounter _
Lib "Kernel32" (X As Currency) As Boolean
Private Declare Function QueryPerformanceFrequency _
Lib "Kernel32" (X As Currency) As Boolean
Private Sub Command1_Click()
Dim f As Integer
Dim s As String
Dim r As Long
Dim i As Long
f = FreeFile
Open "c:test.dat" For Output As #f
For i = 1 To 50000
r = Int(Rnd * 1000) + 1
If r = 998 Then
s = "XXXX HELLO WORLD XXX"
ElseIf r = 999 Then
s = "XXXX COUCOU LES AMIS XXX"
Else
s = String(Rnd * 50 + 100, _
Chr$(65 + Rnd * 26))
End If
Print #f, s
Next i
Close #f
End Sub
Private Sub Command2_Click()
Dim f As Integer
Dim pattern As String
Dim n As Long
Dim s As String
Dim Ctr1 As Currency, Ctr2 As Currency
Dim Freq As Currency
pattern = "HELLO WORLD"
QueryPerformanceCounter Ctr1
Text1.Text = ""
Text1.Enabled = False
f = FreeFile
Open "c:test.dat" For Input As #f
While Not EOF(f)
n = n + 1
Line Input #f, s
If InStr(s, pattern) > 0 Then
Text1.Text = Text1.Text & n _
& vbTab & s & vbCrLf
End If
Wend
Close #f
Text1.Enabled = True
QueryPerformanceCounter Ctr2
QueryPerformanceFrequency Freq
MsgBox "Temps écoulé : " & _
((Ctr2 - Ctr1) / Freq) * 1000 & " millisecondes"
End Sub
Private Sub Command3_Click()
Dim f As Integer
Dim pattern As String
Dim buffer As String
Dim t() As String
Dim i As Long
Dim Ctr1 As Currency, Ctr2 As Currency
Dim Freq As Currency
pattern = "HELLO WORLD"
QueryPerformanceCounter Ctr1
Text1.Text = ""
Text1.Enabled = False
f = FreeFile
Open "c:test.dat" For Binary As #f
buffer = Space$(LOF(f))
Get #f, , buffer
Close #f
t() = Split(buffer, vbCrLf)
For i = LBound(t()) To UBound(t())
If InStr(t(i), pattern) > 0 Then
Text1.Text = Text1.Text & i & _
vbTab & t(i) & vbCrLf
End If
Next i
Text1.Enabled = True
QueryPerformanceCounter Ctr2
QueryPerformanceFrequency Freq
MsgBox "Temps écoulé : " & _
((Ctr2 - Ctr1) / Freq) * 1000 & " millisecondes"
End Sub
' 8<----------------------------------------
Cordialement,
--
Jean-marc Noury (jean_marc_n2)
FAQ VB: http://faq.vb.free.fr/
mailto: remove '_no_spam_' ;
LOL qu'ils disent :o)
Cordialement
-
Logiciels, romans, contacts : http://irolog.free.fr
_______________________
.
.
"Rosalie Mignon" a écrit dans le message de
news:4b84c408$0$22038$Bonjour
Effectivement j'ai pu le constater en m'inspirant de vos exemples.
Par contre, si on imaginait que les lignes filtrees seraient plus
nombreuses que prevues (non plus une dizaine mais inconnues)
et depassent la capacite du Textbox, je serai donc oblige de passer sur
un Richbox, n'est ce pas ?
Je cree donc un fichier resultat pour pouvoir utiliser Richbox.loadfile,
exact ?
"Jean-marc" a écrit dans le message de news:
4b84414e$0$2864$Rosalie Mignon wrote:Bonjour
Merci beaucoup pour toutes vos explications.
Je vais essayer ce que vous preconisez.
Pour info, j'ai fait un petit test:
J'ai généré un fichier test de 6 Mo, contenant 50000 lignes
de plus ou moins 100 caractères. Parmi ces lignes, une centaine
contiennent un certain pattern que je veux rechercher.
J'ai réalisé ensuite 2 fonctions, faisant la même chose, à savoir:
- lecture du fichier
- examen des lignes à la recherche du pattern à trouver
- quand pattern trouvé, ajout à une textBox multiligne
La différence entre les 2 fonctions est que :
- la première fait une lecture basique, ligne à ligne
- la seconde fait une lecture d'un bloc et traite le
tout en mémoire.
La première fonction fait le travail en 320 milisecondes
La seconde fonction ne prend que 270 milisecondes
Dans les 2 cas, les performances sont excellentes puisque
finalement, le tout prend moins d'un tiers de seconde :
c'est presque invisible pour l'oeil.
Le traitement en parallèle de 2 fichiers va donc prendre
2 fois plus de temps, soit plus ou moins 500 à 600 milisecondes.
On reste bien inférieur à une seconde, ce qui est fort acceptable
pour ce genre de programme : l'utilisateur n'a même pas le temps
de penser à se lever pour aller prendre un café!
Pour info, voici mon prgramme de test.
Il faut 3 boutons de commandes :
Command1 est utilisé pour générer le fichier de test
Command2 applique le filtre à la mode "lecture Line Input"
Command3 applique le filtre à la mode "lecture en mémoire"
Et un TextBox (text1), propriété "Multiline" = True
Voici :
' 8<-----------------------------------
Option Explicit
Private Declare Function QueryPerformanceCounter _
Lib "Kernel32" (X As Currency) As Boolean
Private Declare Function QueryPerformanceFrequency _
Lib "Kernel32" (X As Currency) As Boolean
Private Sub Command1_Click()
Dim f As Integer
Dim s As String
Dim r As Long
Dim i As Long
f = FreeFile
Open "c:test.dat" For Output As #f
For i = 1 To 50000
r = Int(Rnd * 1000) + 1
If r = 998 Then
s = "XXXX HELLO WORLD XXX"
ElseIf r = 999 Then
s = "XXXX COUCOU LES AMIS XXX"
Else
s = String(Rnd * 50 + 100, _
Chr$(65 + Rnd * 26))
End If
Print #f, s
Next i
Close #f
End Sub
Private Sub Command2_Click()
Dim f As Integer
Dim pattern As String
Dim n As Long
Dim s As String
Dim Ctr1 As Currency, Ctr2 As Currency
Dim Freq As Currency
pattern = "HELLO WORLD"
QueryPerformanceCounter Ctr1
Text1.Text = ""
Text1.Enabled = False
f = FreeFile
Open "c:test.dat" For Input As #f
While Not EOF(f)
n = n + 1
Line Input #f, s
If InStr(s, pattern) > 0 Then
Text1.Text = Text1.Text & n _
& vbTab & s & vbCrLf
End If
Wend
Close #f
Text1.Enabled = True
QueryPerformanceCounter Ctr2
QueryPerformanceFrequency Freq
MsgBox "Temps écoulé : " & _
((Ctr2 - Ctr1) / Freq) * 1000 & " millisecondes"
End Sub
Private Sub Command3_Click()
Dim f As Integer
Dim pattern As String
Dim buffer As String
Dim t() As String
Dim i As Long
Dim Ctr1 As Currency, Ctr2 As Currency
Dim Freq As Currency
pattern = "HELLO WORLD"
QueryPerformanceCounter Ctr1
Text1.Text = ""
Text1.Enabled = False
f = FreeFile
Open "c:test.dat" For Binary As #f
buffer = Space$(LOF(f))
Get #f, , buffer
Close #f
t() = Split(buffer, vbCrLf)
For i = LBound(t()) To UBound(t())
If InStr(t(i), pattern) > 0 Then
Text1.Text = Text1.Text & i & _
vbTab & t(i) & vbCrLf
End If
Next i
Text1.Enabled = True
QueryPerformanceCounter Ctr2
QueryPerformanceFrequency Freq
MsgBox "Temps écoulé : " & _
((Ctr2 - Ctr1) / Freq) * 1000 & " millisecondes"
End Sub
' 8<----------------------------------------
Cordialement,
--
Jean-marc Noury (jean_marc_n2)
FAQ VB: http://faq.vb.free.fr/
mailto: remove '_no_spam_' ;
LOL qu'ils disent :o)
Cordialement
-
Logiciels, romans, contacts : http://irolog.free.fr
_______________________
.
.
"Rosalie Mignon" <personne@microsoft.com> a écrit dans le message de
news:4b84c408$0$22038$426a34cc@news.free.fr...
Bonjour
Effectivement j'ai pu le constater en m'inspirant de vos exemples.
Par contre, si on imaginait que les lignes filtrees seraient plus
nombreuses que prevues (non plus une dizaine mais inconnues)
et depassent la capacite du Textbox, je serai donc oblige de passer sur
un Richbox, n'est ce pas ?
Je cree donc un fichier resultat pour pouvoir utiliser Richbox.loadfile,
exact ?
"Jean-marc" <jm@nowhere.invalid> a écrit dans le message de news:
4b84414e$0$2864$ba620e4c@news.skynet.be...
Rosalie Mignon wrote:
Bonjour
Merci beaucoup pour toutes vos explications.
Je vais essayer ce que vous preconisez.
Pour info, j'ai fait un petit test:
J'ai généré un fichier test de 6 Mo, contenant 50000 lignes
de plus ou moins 100 caractères. Parmi ces lignes, une centaine
contiennent un certain pattern que je veux rechercher.
J'ai réalisé ensuite 2 fonctions, faisant la même chose, à savoir:
- lecture du fichier
- examen des lignes à la recherche du pattern à trouver
- quand pattern trouvé, ajout à une textBox multiligne
La différence entre les 2 fonctions est que :
- la première fait une lecture basique, ligne à ligne
- la seconde fait une lecture d'un bloc et traite le
tout en mémoire.
La première fonction fait le travail en 320 milisecondes
La seconde fonction ne prend que 270 milisecondes
Dans les 2 cas, les performances sont excellentes puisque
finalement, le tout prend moins d'un tiers de seconde :
c'est presque invisible pour l'oeil.
Le traitement en parallèle de 2 fichiers va donc prendre
2 fois plus de temps, soit plus ou moins 500 à 600 milisecondes.
On reste bien inférieur à une seconde, ce qui est fort acceptable
pour ce genre de programme : l'utilisateur n'a même pas le temps
de penser à se lever pour aller prendre un café!
Pour info, voici mon prgramme de test.
Il faut 3 boutons de commandes :
Command1 est utilisé pour générer le fichier de test
Command2 applique le filtre à la mode "lecture Line Input"
Command3 applique le filtre à la mode "lecture en mémoire"
Et un TextBox (text1), propriété "Multiline" = True
Voici :
' 8<-----------------------------------
Option Explicit
Private Declare Function QueryPerformanceCounter _
Lib "Kernel32" (X As Currency) As Boolean
Private Declare Function QueryPerformanceFrequency _
Lib "Kernel32" (X As Currency) As Boolean
Private Sub Command1_Click()
Dim f As Integer
Dim s As String
Dim r As Long
Dim i As Long
f = FreeFile
Open "c:test.dat" For Output As #f
For i = 1 To 50000
r = Int(Rnd * 1000) + 1
If r = 998 Then
s = "XXXX HELLO WORLD XXX"
ElseIf r = 999 Then
s = "XXXX COUCOU LES AMIS XXX"
Else
s = String(Rnd * 50 + 100, _
Chr$(65 + Rnd * 26))
End If
Print #f, s
Next i
Close #f
End Sub
Private Sub Command2_Click()
Dim f As Integer
Dim pattern As String
Dim n As Long
Dim s As String
Dim Ctr1 As Currency, Ctr2 As Currency
Dim Freq As Currency
pattern = "HELLO WORLD"
QueryPerformanceCounter Ctr1
Text1.Text = ""
Text1.Enabled = False
f = FreeFile
Open "c:test.dat" For Input As #f
While Not EOF(f)
n = n + 1
Line Input #f, s
If InStr(s, pattern) > 0 Then
Text1.Text = Text1.Text & n _
& vbTab & s & vbCrLf
End If
Wend
Close #f
Text1.Enabled = True
QueryPerformanceCounter Ctr2
QueryPerformanceFrequency Freq
MsgBox "Temps écoulé : " & _
((Ctr2 - Ctr1) / Freq) * 1000 & " millisecondes"
End Sub
Private Sub Command3_Click()
Dim f As Integer
Dim pattern As String
Dim buffer As String
Dim t() As String
Dim i As Long
Dim Ctr1 As Currency, Ctr2 As Currency
Dim Freq As Currency
pattern = "HELLO WORLD"
QueryPerformanceCounter Ctr1
Text1.Text = ""
Text1.Enabled = False
f = FreeFile
Open "c:test.dat" For Binary As #f
buffer = Space$(LOF(f))
Get #f, , buffer
Close #f
t() = Split(buffer, vbCrLf)
For i = LBound(t()) To UBound(t())
If InStr(t(i), pattern) > 0 Then
Text1.Text = Text1.Text & i & _
vbTab & t(i) & vbCrLf
End If
Next i
Text1.Enabled = True
QueryPerformanceCounter Ctr2
QueryPerformanceFrequency Freq
MsgBox "Temps écoulé : " & _
((Ctr2 - Ctr1) / Freq) * 1000 & " millisecondes"
End Sub
' 8<----------------------------------------
Cordialement,
--
Jean-marc Noury (jean_marc_n2)
FAQ VB: http://faq.vb.free.fr/
mailto: remove '_no_spam_' ; _no_spam_jean_marc_n2@yahoo.fr
LOL qu'ils disent :o)
Cordialement
-
Logiciels, romans, contacts : http://irolog.free.fr
_______________________
.
.
"Rosalie Mignon" a écrit dans le message de
news:4b84c408$0$22038$Bonjour
Effectivement j'ai pu le constater en m'inspirant de vos exemples.
Par contre, si on imaginait que les lignes filtrees seraient plus
nombreuses que prevues (non plus une dizaine mais inconnues)
et depassent la capacite du Textbox, je serai donc oblige de passer sur
un Richbox, n'est ce pas ?
Je cree donc un fichier resultat pour pouvoir utiliser Richbox.loadfile,
exact ?
"Jean-marc" a écrit dans le message de news:
4b84414e$0$2864$Rosalie Mignon wrote:Bonjour
Merci beaucoup pour toutes vos explications.
Je vais essayer ce que vous preconisez.
Pour info, j'ai fait un petit test:
J'ai généré un fichier test de 6 Mo, contenant 50000 lignes
de plus ou moins 100 caractères. Parmi ces lignes, une centaine
contiennent un certain pattern que je veux rechercher.
J'ai réalisé ensuite 2 fonctions, faisant la même chose, à savoir:
- lecture du fichier
- examen des lignes à la recherche du pattern à trouver
- quand pattern trouvé, ajout à une textBox multiligne
La différence entre les 2 fonctions est que :
- la première fait une lecture basique, ligne à ligne
- la seconde fait une lecture d'un bloc et traite le
tout en mémoire.
La première fonction fait le travail en 320 milisecondes
La seconde fonction ne prend que 270 milisecondes
Dans les 2 cas, les performances sont excellentes puisque
finalement, le tout prend moins d'un tiers de seconde :
c'est presque invisible pour l'oeil.
Le traitement en parallèle de 2 fichiers va donc prendre
2 fois plus de temps, soit plus ou moins 500 à 600 milisecondes.
On reste bien inférieur à une seconde, ce qui est fort acceptable
pour ce genre de programme : l'utilisateur n'a même pas le temps
de penser à se lever pour aller prendre un café!
Pour info, voici mon prgramme de test.
Il faut 3 boutons de commandes :
Command1 est utilisé pour générer le fichier de test
Command2 applique le filtre à la mode "lecture Line Input"
Command3 applique le filtre à la mode "lecture en mémoire"
Et un TextBox (text1), propriété "Multiline" = True
Voici :
' 8<-----------------------------------
Option Explicit
Private Declare Function QueryPerformanceCounter _
Lib "Kernel32" (X As Currency) As Boolean
Private Declare Function QueryPerformanceFrequency _
Lib "Kernel32" (X As Currency) As Boolean
Private Sub Command1_Click()
Dim f As Integer
Dim s As String
Dim r As Long
Dim i As Long
f = FreeFile
Open "c:test.dat" For Output As #f
For i = 1 To 50000
r = Int(Rnd * 1000) + 1
If r = 998 Then
s = "XXXX HELLO WORLD XXX"
ElseIf r = 999 Then
s = "XXXX COUCOU LES AMIS XXX"
Else
s = String(Rnd * 50 + 100, _
Chr$(65 + Rnd * 26))
End If
Print #f, s
Next i
Close #f
End Sub
Private Sub Command2_Click()
Dim f As Integer
Dim pattern As String
Dim n As Long
Dim s As String
Dim Ctr1 As Currency, Ctr2 As Currency
Dim Freq As Currency
pattern = "HELLO WORLD"
QueryPerformanceCounter Ctr1
Text1.Text = ""
Text1.Enabled = False
f = FreeFile
Open "c:test.dat" For Input As #f
While Not EOF(f)
n = n + 1
Line Input #f, s
If InStr(s, pattern) > 0 Then
Text1.Text = Text1.Text & n _
& vbTab & s & vbCrLf
End If
Wend
Close #f
Text1.Enabled = True
QueryPerformanceCounter Ctr2
QueryPerformanceFrequency Freq
MsgBox "Temps écoulé : " & _
((Ctr2 - Ctr1) / Freq) * 1000 & " millisecondes"
End Sub
Private Sub Command3_Click()
Dim f As Integer
Dim pattern As String
Dim buffer As String
Dim t() As String
Dim i As Long
Dim Ctr1 As Currency, Ctr2 As Currency
Dim Freq As Currency
pattern = "HELLO WORLD"
QueryPerformanceCounter Ctr1
Text1.Text = ""
Text1.Enabled = False
f = FreeFile
Open "c:test.dat" For Binary As #f
buffer = Space$(LOF(f))
Get #f, , buffer
Close #f
t() = Split(buffer, vbCrLf)
For i = LBound(t()) To UBound(t())
If InStr(t(i), pattern) > 0 Then
Text1.Text = Text1.Text & i & _
vbTab & t(i) & vbCrLf
End If
Next i
Text1.Enabled = True
QueryPerformanceCounter Ctr2
QueryPerformanceFrequency Freq
MsgBox "Temps écoulé : " & _
((Ctr2 - Ctr1) / Freq) * 1000 & " millisecondes"
End Sub
' 8<----------------------------------------
Cordialement,
--
Jean-marc Noury (jean_marc_n2)
FAQ VB: http://faq.vb.free.fr/
mailto: remove '_no_spam_' ;
Bonjour
J'avoue que je n'ai pas bien compris votre reponse.
Pourriez vous etre plus clair.
Merci d'avance.
"LE TROLL" <le a écrit dans le message de news:LOL qu'ils disent :o)
Cordialement
-
Logiciels, romans, contacts : http://irolog.free.fr
_______________________
.
.
"Rosalie Mignon" a écrit dans le message de
news:4b84c408$0$22038$Bonjour
Effectivement j'ai pu le constater en m'inspirant de vos exemples.
Par contre, si on imaginait que les lignes filtrees seraient plus
nombreuses que prevues (non plus une dizaine mais inconnues)
et depassent la capacite du Textbox, je serai donc oblige de passer sur
un Richbox, n'est ce pas ?
Je cree donc un fichier resultat pour pouvoir utiliser Richbox.loadfile,
exact ?
"Jean-marc" a écrit dans le message de news:
4b84414e$0$2864$Rosalie Mignon wrote:Bonjour
Merci beaucoup pour toutes vos explications.
Je vais essayer ce que vous preconisez.
Pour info, j'ai fait un petit test:
J'ai généré un fichier test de 6 Mo, contenant 50000 lignes
de plus ou moins 100 caractères. Parmi ces lignes, une centaine
contiennent un certain pattern que je veux rechercher.
J'ai réalisé ensuite 2 fonctions, faisant la même chose, à savoir:
- lecture du fichier
- examen des lignes à la recherche du pattern à trouver
- quand pattern trouvé, ajout à une textBox multiligne
La différence entre les 2 fonctions est que :
- la première fait une lecture basique, ligne à ligne
- la seconde fait une lecture d'un bloc et traite le
tout en mémoire.
La première fonction fait le travail en 320 milisecondes
La seconde fonction ne prend que 270 milisecondes
Dans les 2 cas, les performances sont excellentes puisque
finalement, le tout prend moins d'un tiers de seconde :
c'est presque invisible pour l'oeil.
Le traitement en parallèle de 2 fichiers va donc prendre
2 fois plus de temps, soit plus ou moins 500 à 600 milisecondes.
On reste bien inférieur à une seconde, ce qui est fort acceptable
pour ce genre de programme : l'utilisateur n'a même pas le temps
de penser à se lever pour aller prendre un café!
Pour info, voici mon prgramme de test.
Il faut 3 boutons de commandes :
Command1 est utilisé pour générer le fichier de test
Command2 applique le filtre à la mode "lecture Line Input"
Command3 applique le filtre à la mode "lecture en mémoire"
Et un TextBox (text1), propriété "Multiline" = True
Voici :
' 8<-----------------------------------
Option Explicit
Private Declare Function QueryPerformanceCounter _
Lib "Kernel32" (X As Currency) As Boolean
Private Declare Function QueryPerformanceFrequency _
Lib "Kernel32" (X As Currency) As Boolean
Private Sub Command1_Click()
Dim f As Integer
Dim s As String
Dim r As Long
Dim i As Long
f = FreeFile
Open "c:test.dat" For Output As #f
For i = 1 To 50000
r = Int(Rnd * 1000) + 1
If r = 998 Then
s = "XXXX HELLO WORLD XXX"
ElseIf r = 999 Then
s = "XXXX COUCOU LES AMIS XXX"
Else
s = String(Rnd * 50 + 100, _
Chr$(65 + Rnd * 26))
End If
Print #f, s
Next i
Close #f
End Sub
Private Sub Command2_Click()
Dim f As Integer
Dim pattern As String
Dim n As Long
Dim s As String
Dim Ctr1 As Currency, Ctr2 As Currency
Dim Freq As Currency
pattern = "HELLO WORLD"
QueryPerformanceCounter Ctr1
Text1.Text = ""
Text1.Enabled = False
f = FreeFile
Open "c:test.dat" For Input As #f
While Not EOF(f)
n = n + 1
Line Input #f, s
If InStr(s, pattern) > 0 Then
Text1.Text = Text1.Text & n _
& vbTab & s & vbCrLf
End If
Wend
Close #f
Text1.Enabled = True
QueryPerformanceCounter Ctr2
QueryPerformanceFrequency Freq
MsgBox "Temps écoulé : " & _
((Ctr2 - Ctr1) / Freq) * 1000 & " millisecondes"
End Sub
Private Sub Command3_Click()
Dim f As Integer
Dim pattern As String
Dim buffer As String
Dim t() As String
Dim i As Long
Dim Ctr1 As Currency, Ctr2 As Currency
Dim Freq As Currency
pattern = "HELLO WORLD"
QueryPerformanceCounter Ctr1
Text1.Text = ""
Text1.Enabled = False
f = FreeFile
Open "c:test.dat" For Binary As #f
buffer = Space$(LOF(f))
Get #f, , buffer
Close #f
t() = Split(buffer, vbCrLf)
For i = LBound(t()) To UBound(t())
If InStr(t(i), pattern) > 0 Then
Text1.Text = Text1.Text & i & _
vbTab & t(i) & vbCrLf
End If
Next i
Text1.Enabled = True
QueryPerformanceCounter Ctr2
QueryPerformanceFrequency Freq
MsgBox "Temps écoulé : " & _
((Ctr2 - Ctr1) / Freq) * 1000 & " millisecondes"
End Sub
' 8<----------------------------------------
Cordialement,
--
Jean-marc Noury (jean_marc_n2)
FAQ VB: http://faq.vb.free.fr/
mailto: remove '_no_spam_' ;
Bonjour
J'avoue que je n'ai pas bien compris votre reponse.
Pourriez vous etre plus clair.
Merci d'avance.
"LE TROLL" <le troll@enfer.fr> a écrit dans le message de news:
9F1F82FD-0835-4AA2-9D39-1544443ABBDF@microsoft.com...
LOL qu'ils disent :o)
Cordialement
-
Logiciels, romans, contacts : http://irolog.free.fr
_______________________
.
.
"Rosalie Mignon" <personne@microsoft.com> a écrit dans le message de
news:4b84c408$0$22038$426a34cc@news.free.fr...
Bonjour
Effectivement j'ai pu le constater en m'inspirant de vos exemples.
Par contre, si on imaginait que les lignes filtrees seraient plus
nombreuses que prevues (non plus une dizaine mais inconnues)
et depassent la capacite du Textbox, je serai donc oblige de passer sur
un Richbox, n'est ce pas ?
Je cree donc un fichier resultat pour pouvoir utiliser Richbox.loadfile,
exact ?
"Jean-marc" <jm@nowhere.invalid> a écrit dans le message de news:
4b84414e$0$2864$ba620e4c@news.skynet.be...
Rosalie Mignon wrote:
Bonjour
Merci beaucoup pour toutes vos explications.
Je vais essayer ce que vous preconisez.
Pour info, j'ai fait un petit test:
J'ai généré un fichier test de 6 Mo, contenant 50000 lignes
de plus ou moins 100 caractères. Parmi ces lignes, une centaine
contiennent un certain pattern que je veux rechercher.
J'ai réalisé ensuite 2 fonctions, faisant la même chose, à savoir:
- lecture du fichier
- examen des lignes à la recherche du pattern à trouver
- quand pattern trouvé, ajout à une textBox multiligne
La différence entre les 2 fonctions est que :
- la première fait une lecture basique, ligne à ligne
- la seconde fait une lecture d'un bloc et traite le
tout en mémoire.
La première fonction fait le travail en 320 milisecondes
La seconde fonction ne prend que 270 milisecondes
Dans les 2 cas, les performances sont excellentes puisque
finalement, le tout prend moins d'un tiers de seconde :
c'est presque invisible pour l'oeil.
Le traitement en parallèle de 2 fichiers va donc prendre
2 fois plus de temps, soit plus ou moins 500 à 600 milisecondes.
On reste bien inférieur à une seconde, ce qui est fort acceptable
pour ce genre de programme : l'utilisateur n'a même pas le temps
de penser à se lever pour aller prendre un café!
Pour info, voici mon prgramme de test.
Il faut 3 boutons de commandes :
Command1 est utilisé pour générer le fichier de test
Command2 applique le filtre à la mode "lecture Line Input"
Command3 applique le filtre à la mode "lecture en mémoire"
Et un TextBox (text1), propriété "Multiline" = True
Voici :
' 8<-----------------------------------
Option Explicit
Private Declare Function QueryPerformanceCounter _
Lib "Kernel32" (X As Currency) As Boolean
Private Declare Function QueryPerformanceFrequency _
Lib "Kernel32" (X As Currency) As Boolean
Private Sub Command1_Click()
Dim f As Integer
Dim s As String
Dim r As Long
Dim i As Long
f = FreeFile
Open "c:test.dat" For Output As #f
For i = 1 To 50000
r = Int(Rnd * 1000) + 1
If r = 998 Then
s = "XXXX HELLO WORLD XXX"
ElseIf r = 999 Then
s = "XXXX COUCOU LES AMIS XXX"
Else
s = String(Rnd * 50 + 100, _
Chr$(65 + Rnd * 26))
End If
Print #f, s
Next i
Close #f
End Sub
Private Sub Command2_Click()
Dim f As Integer
Dim pattern As String
Dim n As Long
Dim s As String
Dim Ctr1 As Currency, Ctr2 As Currency
Dim Freq As Currency
pattern = "HELLO WORLD"
QueryPerformanceCounter Ctr1
Text1.Text = ""
Text1.Enabled = False
f = FreeFile
Open "c:test.dat" For Input As #f
While Not EOF(f)
n = n + 1
Line Input #f, s
If InStr(s, pattern) > 0 Then
Text1.Text = Text1.Text & n _
& vbTab & s & vbCrLf
End If
Wend
Close #f
Text1.Enabled = True
QueryPerformanceCounter Ctr2
QueryPerformanceFrequency Freq
MsgBox "Temps écoulé : " & _
((Ctr2 - Ctr1) / Freq) * 1000 & " millisecondes"
End Sub
Private Sub Command3_Click()
Dim f As Integer
Dim pattern As String
Dim buffer As String
Dim t() As String
Dim i As Long
Dim Ctr1 As Currency, Ctr2 As Currency
Dim Freq As Currency
pattern = "HELLO WORLD"
QueryPerformanceCounter Ctr1
Text1.Text = ""
Text1.Enabled = False
f = FreeFile
Open "c:test.dat" For Binary As #f
buffer = Space$(LOF(f))
Get #f, , buffer
Close #f
t() = Split(buffer, vbCrLf)
For i = LBound(t()) To UBound(t())
If InStr(t(i), pattern) > 0 Then
Text1.Text = Text1.Text & i & _
vbTab & t(i) & vbCrLf
End If
Next i
Text1.Enabled = True
QueryPerformanceCounter Ctr2
QueryPerformanceFrequency Freq
MsgBox "Temps écoulé : " & _
((Ctr2 - Ctr1) / Freq) * 1000 & " millisecondes"
End Sub
' 8<----------------------------------------
Cordialement,
--
Jean-marc Noury (jean_marc_n2)
FAQ VB: http://faq.vb.free.fr/
mailto: remove '_no_spam_' ; _no_spam_jean_marc_n2@yahoo.fr
Bonjour
J'avoue que je n'ai pas bien compris votre reponse.
Pourriez vous etre plus clair.
Merci d'avance.
"LE TROLL" <le a écrit dans le message de news:LOL qu'ils disent :o)
Cordialement
-
Logiciels, romans, contacts : http://irolog.free.fr
_______________________
.
.
"Rosalie Mignon" a écrit dans le message de
news:4b84c408$0$22038$Bonjour
Effectivement j'ai pu le constater en m'inspirant de vos exemples.
Par contre, si on imaginait que les lignes filtrees seraient plus
nombreuses que prevues (non plus une dizaine mais inconnues)
et depassent la capacite du Textbox, je serai donc oblige de passer sur
un Richbox, n'est ce pas ?
Je cree donc un fichier resultat pour pouvoir utiliser Richbox.loadfile,
exact ?
"Jean-marc" a écrit dans le message de news:
4b84414e$0$2864$Rosalie Mignon wrote:Bonjour
Merci beaucoup pour toutes vos explications.
Je vais essayer ce que vous preconisez.
Pour info, j'ai fait un petit test:
J'ai généré un fichier test de 6 Mo, contenant 50000 lignes
de plus ou moins 100 caractères. Parmi ces lignes, une centaine
contiennent un certain pattern que je veux rechercher.
J'ai réalisé ensuite 2 fonctions, faisant la même chose, à savoir:
- lecture du fichier
- examen des lignes à la recherche du pattern à trouver
- quand pattern trouvé, ajout à une textBox multiligne
La différence entre les 2 fonctions est que :
- la première fait une lecture basique, ligne à ligne
- la seconde fait une lecture d'un bloc et traite le
tout en mémoire.
La première fonction fait le travail en 320 milisecondes
La seconde fonction ne prend que 270 milisecondes
Dans les 2 cas, les performances sont excellentes puisque
finalement, le tout prend moins d'un tiers de seconde :
c'est presque invisible pour l'oeil.
Le traitement en parallèle de 2 fichiers va donc prendre
2 fois plus de temps, soit plus ou moins 500 à 600 milisecondes.
On reste bien inférieur à une seconde, ce qui est fort acceptable
pour ce genre de programme : l'utilisateur n'a même pas le temps
de penser à se lever pour aller prendre un café!
Pour info, voici mon prgramme de test.
Il faut 3 boutons de commandes :
Command1 est utilisé pour générer le fichier de test
Command2 applique le filtre à la mode "lecture Line Input"
Command3 applique le filtre à la mode "lecture en mémoire"
Et un TextBox (text1), propriété "Multiline" = True
Voici :
' 8<-----------------------------------
Option Explicit
Private Declare Function QueryPerformanceCounter _
Lib "Kernel32" (X As Currency) As Boolean
Private Declare Function QueryPerformanceFrequency _
Lib "Kernel32" (X As Currency) As Boolean
Private Sub Command1_Click()
Dim f As Integer
Dim s As String
Dim r As Long
Dim i As Long
f = FreeFile
Open "c:test.dat" For Output As #f
For i = 1 To 50000
r = Int(Rnd * 1000) + 1
If r = 998 Then
s = "XXXX HELLO WORLD XXX"
ElseIf r = 999 Then
s = "XXXX COUCOU LES AMIS XXX"
Else
s = String(Rnd * 50 + 100, _
Chr$(65 + Rnd * 26))
End If
Print #f, s
Next i
Close #f
End Sub
Private Sub Command2_Click()
Dim f As Integer
Dim pattern As String
Dim n As Long
Dim s As String
Dim Ctr1 As Currency, Ctr2 As Currency
Dim Freq As Currency
pattern = "HELLO WORLD"
QueryPerformanceCounter Ctr1
Text1.Text = ""
Text1.Enabled = False
f = FreeFile
Open "c:test.dat" For Input As #f
While Not EOF(f)
n = n + 1
Line Input #f, s
If InStr(s, pattern) > 0 Then
Text1.Text = Text1.Text & n _
& vbTab & s & vbCrLf
End If
Wend
Close #f
Text1.Enabled = True
QueryPerformanceCounter Ctr2
QueryPerformanceFrequency Freq
MsgBox "Temps écoulé : " & _
((Ctr2 - Ctr1) / Freq) * 1000 & " millisecondes"
End Sub
Private Sub Command3_Click()
Dim f As Integer
Dim pattern As String
Dim buffer As String
Dim t() As String
Dim i As Long
Dim Ctr1 As Currency, Ctr2 As Currency
Dim Freq As Currency
pattern = "HELLO WORLD"
QueryPerformanceCounter Ctr1
Text1.Text = ""
Text1.Enabled = False
f = FreeFile
Open "c:test.dat" For Binary As #f
buffer = Space$(LOF(f))
Get #f, , buffer
Close #f
t() = Split(buffer, vbCrLf)
For i = LBound(t()) To UBound(t())
If InStr(t(i), pattern) > 0 Then
Text1.Text = Text1.Text & i & _
vbTab & t(i) & vbCrLf
End If
Next i
Text1.Enabled = True
QueryPerformanceCounter Ctr2
QueryPerformanceFrequency Freq
MsgBox "Temps écoulé : " & _
((Ctr2 - Ctr1) / Freq) * 1000 & " millisecondes"
End Sub
' 8<----------------------------------------
Cordialement,
--
Jean-marc Noury (jean_marc_n2)
FAQ VB: http://faq.vb.free.fr/
mailto: remove '_no_spam_' ;
Bonjour
Effectivement j'ai pu le constater en m'inspirant de vos exemples.
Par contre, si on imaginait que les lignes filtrees seraient plus
nombreuses que prevues (non plus une dizaine mais inconnues)
et depassent la capacite du Textbox, je serai donc oblige de passer
sur un Richbox, n'est ce pas ?
Je cree donc un fichier resultat pour pouvoir utiliser
Richbox.loadfile, exact ?
Bonjour
Effectivement j'ai pu le constater en m'inspirant de vos exemples.
Par contre, si on imaginait que les lignes filtrees seraient plus
nombreuses que prevues (non plus une dizaine mais inconnues)
et depassent la capacite du Textbox, je serai donc oblige de passer
sur un Richbox, n'est ce pas ?
Je cree donc un fichier resultat pour pouvoir utiliser
Richbox.loadfile, exact ?
Bonjour
Effectivement j'ai pu le constater en m'inspirant de vos exemples.
Par contre, si on imaginait que les lignes filtrees seraient plus
nombreuses que prevues (non plus une dizaine mais inconnues)
et depassent la capacite du Textbox, je serai donc oblige de passer
sur un Richbox, n'est ce pas ?
Je cree donc un fichier resultat pour pouvoir utiliser
Richbox.loadfile, exact ?
Bonjour
J'avoue que je n'ai pas bien compris votre reponse.
Pourriez vous etre plus clair.
Bonjour
J'avoue que je n'ai pas bien compris votre reponse.
Pourriez vous etre plus clair.
Bonjour
J'avoue que je n'ai pas bien compris votre reponse.
Pourriez vous etre plus clair.
Bonjour,
Ah ma réponse, c'est que j'étais amusé en lisant la discussion au
fur des messages... en fait on parle d'une chose dont on ne sait
rien, je parle du fichier, ni s'il est mis ou pas à jour, sa
fréquence de mise à jour, le nombre de tris par ligne, si les
enregistrement sont formatés, s'il peut être morcelé... tout ce qui
permettrait de se faire une idée.
En fait, c'est la synthèse de ce que je pense aussi, si tu ne dis
rien, la question n'est guère productive et te ramène de facto au
point de départ, à savoir que ce n'est que toi qui peut choisir
puisque tu ne donnes aucune information permettant réellement de
faire un choix.
Sur ceci, tu confirmes en répondant que tu vas prendre le texteBox le
En plus, nul n'a réellement parlé d'un RTF à part toi, car on
l'utilise assez rarement, et davantage pour avoir la couleur et la
mise en forme qu'autre chose, son format est très proche de celui
d'un DOC, il faut mettre en ouvre un tas d'éléments et faire des
manipulations...
Bonjour,
Ah ma réponse, c'est que j'étais amusé en lisant la discussion au
fur des messages... en fait on parle d'une chose dont on ne sait
rien, je parle du fichier, ni s'il est mis ou pas à jour, sa
fréquence de mise à jour, le nombre de tris par ligne, si les
enregistrement sont formatés, s'il peut être morcelé... tout ce qui
permettrait de se faire une idée.
En fait, c'est la synthèse de ce que je pense aussi, si tu ne dis
rien, la question n'est guère productive et te ramène de facto au
point de départ, à savoir que ce n'est que toi qui peut choisir
puisque tu ne donnes aucune information permettant réellement de
faire un choix.
Sur ceci, tu confirmes en répondant que tu vas prendre le texteBox le
En plus, nul n'a réellement parlé d'un RTF à part toi, car on
l'utilise assez rarement, et davantage pour avoir la couleur et la
mise en forme qu'autre chose, son format est très proche de celui
d'un DOC, il faut mettre en ouvre un tas d'éléments et faire des
manipulations...
Bonjour,
Ah ma réponse, c'est que j'étais amusé en lisant la discussion au
fur des messages... en fait on parle d'une chose dont on ne sait
rien, je parle du fichier, ni s'il est mis ou pas à jour, sa
fréquence de mise à jour, le nombre de tris par ligne, si les
enregistrement sont formatés, s'il peut être morcelé... tout ce qui
permettrait de se faire une idée.
En fait, c'est la synthèse de ce que je pense aussi, si tu ne dis
rien, la question n'est guère productive et te ramène de facto au
point de départ, à savoir que ce n'est que toi qui peut choisir
puisque tu ne donnes aucune information permettant réellement de
faire un choix.
Sur ceci, tu confirmes en répondant que tu vas prendre le texteBox le
En plus, nul n'a réellement parlé d'un RTF à part toi, car on
l'utilise assez rarement, et davantage pour avoir la couleur et la
mise en forme qu'autre chose, son format est très proche de celui
d'un DOC, il faut mettre en ouvre un tas d'éléments et faire des
manipulations...