bonjour,
comment rechercher et mettre en =E9vidence toutes les=20
occurences d'une chaine dans un richtextbox ?
en utilisant la methode find tour =E0 tour pout trouver la=20
prochaine occurence, et en mettant ensuite le texte en=20
gras par exemple, =E7a marche bien sauf sur de gros fichier=20
texte dans lesquels il y a beaucoup d'occurences=20
trouv=E9es.dans ce ca c'est tr=E8s long on a l'impression que=20
le traitement se fait ligne par ligne.....
existe-t-il un composant texte disposant de plus de=20
methodes ou bien mon alogorithme est-il mauvais ?
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
jean-marc
>"sam" wrote in message
news:02de01c3bd80$98ec6a80$
bonjour,
Hello,
comment rechercher et mettre en évidence toutes les occurences d'une chaine dans un richtextbox ? en utilisant la methode find tour à tour pout trouver la prochaine occurence, et en mettant ensuite le texte en gras par exemple, ça marche bien sauf sur de gros fichier texte dans lesquels il y a beaucoup d'occurences trouvées.dans ce ca c'est très long on a l'impression que le traitement se fait ligne par ligne.....
existe-t-il un composant texte disposant de plus de methodes ou bien mon alogorithme est-il mauvais ?
Et bien il faudrait: 1) Voir ton algorithme pour dire si il est mauvais (pas le programme, juste le principe en gros) 2) Qu'appelles tu un "GROS" fichier texte ? 10 Ko ? 100 Ko ? plusieurs Mo ?
Il y a de nombreuses méthodes, et on utilise l'une plutot que l'autre en fonction de la taille moyenne des choses que l'on doit traiter.
merci
>"sam" <s.petitseb@laposte.net> wrote in message
news:02de01c3bd80$98ec6a80$a001280a@phx.gbl...
bonjour,
Hello,
comment rechercher et mettre en évidence toutes les
occurences d'une chaine dans un richtextbox ?
en utilisant la methode find tour à tour pout trouver la
prochaine occurence, et en mettant ensuite le texte en
gras par exemple, ça marche bien sauf sur de gros fichier
texte dans lesquels il y a beaucoup d'occurences
trouvées.dans ce ca c'est très long on a l'impression que
le traitement se fait ligne par ligne.....
existe-t-il un composant texte disposant de plus de
methodes ou bien mon alogorithme est-il mauvais ?
Et bien il faudrait:
1) Voir ton algorithme pour dire si il est mauvais (pas le programme, juste
le principe en gros)
2) Qu'appelles tu un "GROS" fichier texte ? 10 Ko ? 100 Ko ? plusieurs Mo ?
Il y a de nombreuses méthodes, et on utilise l'une plutot que l'autre en
fonction de la taille moyenne des choses que l'on doit traiter.
comment rechercher et mettre en évidence toutes les occurences d'une chaine dans un richtextbox ? en utilisant la methode find tour à tour pout trouver la prochaine occurence, et en mettant ensuite le texte en gras par exemple, ça marche bien sauf sur de gros fichier texte dans lesquels il y a beaucoup d'occurences trouvées.dans ce ca c'est très long on a l'impression que le traitement se fait ligne par ligne.....
existe-t-il un composant texte disposant de plus de methodes ou bien mon alogorithme est-il mauvais ?
Et bien il faudrait: 1) Voir ton algorithme pour dire si il est mauvais (pas le programme, juste le principe en gros) 2) Qu'appelles tu un "GROS" fichier texte ? 10 Ko ? 100 Ko ? plusieurs Mo ?
Il y a de nombreuses méthodes, et on utilise l'une plutot que l'autre en fonction de la taille moyenne des choses que l'on doit traiter.
merci
François Picalausa
"sam" a écrit dans le message de news:02de01c3bd80$98ec6a80$
en utilisant la methode find tour à tour pout trouver la prochaine occurence, et en mettant ensuite le texte en gras par exemple, ça marche bien sauf sur de gros fichier texte dans lesquels il y a beaucoup d'occurences trouvées.dans ce ca c'est très long on a l'impression que le traitement se fait ligne par ligne.....
Bonjour/soir, Tu peux essayer en utilisant directement le message EM_FINDTEXT: http://msdn.microsoft.com/library/en-us/shellcc/platform/commctls/richedit/richeditcontrols/richeditcontrolreference/richeditmessages/em_findtext.asp
Masquer le richtext pendant les changements peut accélerer le traitement.
"sam" <s.petitseb@laposte.net> a écrit dans le message de
news:02de01c3bd80$98ec6a80$a001280a@phx.gbl
en utilisant la methode find tour à tour pout trouver la
prochaine occurence, et en mettant ensuite le texte en
gras par exemple, ça marche bien sauf sur de gros fichier
texte dans lesquels il y a beaucoup d'occurences
trouvées.dans ce ca c'est très long on a l'impression que
le traitement se fait ligne par ligne.....
Bonjour/soir,
Tu peux essayer en utilisant directement le message EM_FINDTEXT:
http://msdn.microsoft.com/library/en-us/shellcc/platform/commctls/richedit/richeditcontrols/richeditcontrolreference/richeditmessages/em_findtext.asp
Masquer le richtext pendant les changements peut accélerer le traitement.
"sam" a écrit dans le message de news:02de01c3bd80$98ec6a80$
en utilisant la methode find tour à tour pout trouver la prochaine occurence, et en mettant ensuite le texte en gras par exemple, ça marche bien sauf sur de gros fichier texte dans lesquels il y a beaucoup d'occurences trouvées.dans ce ca c'est très long on a l'impression que le traitement se fait ligne par ligne.....
Bonjour/soir, Tu peux essayer en utilisant directement le message EM_FINDTEXT: http://msdn.microsoft.com/library/en-us/shellcc/platform/commctls/richedit/richeditcontrols/richeditcontrolreference/richeditmessages/em_findtext.asp
Masquer le richtext pendant les changements peut accélerer le traitement.
"sam" a écrit dans le message de news:02de01c3bd80$98ec6a80$ > en utilisant la methode find tour à tour pout trouver la > prochaine occurence, et en mettant ensuite le texte en > gras par exemple, ça marche bien sauf sur de gros fichier > texte dans lesquels il y a beaucoup d'occurences > trouvées.dans ce ca c'est très long on a l'impression que > le traitement se fait ligne par ligne.....
Bonjour/soir, Tu peux essayer en utilisant directement le message EM_FINDTEXT:
Masquer le richtext pendant les changements peut accélerer le traitement.
Voici un petit bout de code: Il trouve et highlight 1872 occurences dans un texte de 188 Ko (5824 lignes) en 1 seconde (sur une vieille machine) Comme le dit François, masquer le controle accélère énormément les choses.
RT1 est le nom du rich text box. Text2 est le text box dans lequel tu saisis ton pattern.
Private Sub Command2_Click() Dim start As Long Dim s As String Dim pos As Long Dim pat As String Dim l As Long Dim n As Long Dim colred As Long
pat = Text2.Text ' le pattern à trouver l = Len(pat) ' longueur du pattern s = rt1.Text ' on stocke dans s une copie de travail
start = 1 ' on commence au premier caractere colred = RGB(255, 0, 0) ' calcul une fois pour toute de la couleur de highlighting (rouge) rt1.Visible = False ' masquer le controle pos = InStr(start, s, pat) ' trouve la premiere occurence
While pos <> 0 ' tant que il y a des occurences rt1.SelStart = pos - 1 ' selectionne la zone rt1.SelLength = l rt1.SelColor = colred ' highlight rt1.SelBold = True ' et en gras start = pos + l ' on ajuste la position de depart pos = InStr(start, s, pat) ' et on cherche l'occurence suivante Wend rt1.SelStart = 1 ' on se remet au debut rt1.Visible = True ' et on raffiche le composant End Sub
Jean-Marc
"François Picalausa" <fpicalausa@chez.com> wrote in message
news:#BEgFqYvDHA.2080@TK2MSFTNGP10.phx.gbl...
"sam" <s.petitseb@laposte.net> a écrit dans le message de
news:02de01c3bd80$98ec6a80$a001280a@phx.gbl
> en utilisant la methode find tour à tour pout trouver la
> prochaine occurence, et en mettant ensuite le texte en
> gras par exemple, ça marche bien sauf sur de gros fichier
> texte dans lesquels il y a beaucoup d'occurences
> trouvées.dans ce ca c'est très long on a l'impression que
> le traitement se fait ligne par ligne.....
Bonjour/soir,
Tu peux essayer en utilisant directement le message EM_FINDTEXT:
Masquer le richtext pendant les changements peut accélerer le traitement.
Voici un petit bout de code:
Il trouve et highlight 1872 occurences dans un texte de 188 Ko (5824 lignes)
en 1 seconde (sur une vieille machine)
Comme le dit François, masquer le controle accélère énormément les choses.
RT1 est le nom du rich text box. Text2 est le text box dans lequel tu saisis
ton pattern.
Private Sub Command2_Click()
Dim start As Long
Dim s As String
Dim pos As Long
Dim pat As String
Dim l As Long
Dim n As Long
Dim colred As Long
pat = Text2.Text ' le pattern à trouver
l = Len(pat) ' longueur du pattern
s = rt1.Text ' on stocke dans s une copie de travail
start = 1 ' on commence au premier caractere
colred = RGB(255, 0, 0) ' calcul une fois pour toute de la couleur de
highlighting (rouge)
rt1.Visible = False ' masquer le controle
pos = InStr(start, s, pat) ' trouve la premiere occurence
While pos <> 0 ' tant que il y a des occurences
rt1.SelStart = pos - 1 ' selectionne la zone
rt1.SelLength = l
rt1.SelColor = colred ' highlight
rt1.SelBold = True ' et en gras
start = pos + l ' on ajuste la position de depart
pos = InStr(start, s, pat) ' et on cherche l'occurence suivante
Wend
rt1.SelStart = 1 ' on se remet au debut
rt1.Visible = True ' et on raffiche le composant
End Sub
"sam" a écrit dans le message de news:02de01c3bd80$98ec6a80$ > en utilisant la methode find tour à tour pout trouver la > prochaine occurence, et en mettant ensuite le texte en > gras par exemple, ça marche bien sauf sur de gros fichier > texte dans lesquels il y a beaucoup d'occurences > trouvées.dans ce ca c'est très long on a l'impression que > le traitement se fait ligne par ligne.....
Bonjour/soir, Tu peux essayer en utilisant directement le message EM_FINDTEXT:
Masquer le richtext pendant les changements peut accélerer le traitement.
Voici un petit bout de code: Il trouve et highlight 1872 occurences dans un texte de 188 Ko (5824 lignes) en 1 seconde (sur une vieille machine) Comme le dit François, masquer le controle accélère énormément les choses.
RT1 est le nom du rich text box. Text2 est le text box dans lequel tu saisis ton pattern.
Private Sub Command2_Click() Dim start As Long Dim s As String Dim pos As Long Dim pat As String Dim l As Long Dim n As Long Dim colred As Long
pat = Text2.Text ' le pattern à trouver l = Len(pat) ' longueur du pattern s = rt1.Text ' on stocke dans s une copie de travail
start = 1 ' on commence au premier caractere colred = RGB(255, 0, 0) ' calcul une fois pour toute de la couleur de highlighting (rouge) rt1.Visible = False ' masquer le controle pos = InStr(start, s, pat) ' trouve la premiere occurence
While pos <> 0 ' tant que il y a des occurences rt1.SelStart = pos - 1 ' selectionne la zone rt1.SelLength = l rt1.SelColor = colred ' highlight rt1.SelBold = True ' et en gras start = pos + l ' on ajuste la position de depart pos = InStr(start, s, pat) ' et on cherche l'occurence suivante Wend rt1.SelStart = 1 ' on se remet au debut rt1.Visible = True ' et on raffiche le composant End Sub
Jean-Marc
Jean-Marc
j'ai oublié qu'on confond facilement la lettre L et le chiffre 1 avec certaines fonts. revoici le programme, j'ai remplacé ma variable l (lettre L) par LongueurPattern ...
Private Sub Command2_Click() Dim start As Long Dim s As String Dim pos As Long Dim pat As String Dim LongueurPattern As Long Dim n As Long Dim colred As Long
pat = Text2.Text ' le pattern à trouver LongueurPattern = Len(pat) ' longueur du pattern s = rt1.Text ' on stocke dans s une copie de travail
start = 1 ' on commence au premier caractere colred = RGB(255, 0, 0) ' calcul une fois pour toute de la couleur de highlighting (rouge) rt1.Visible = False ' masquer le controle pos = InStr(start, s, pat) ' trouve la premiere occurence
While pos <> 0 ' tant que il y a des occurences rt1.SelStart = pos - 1 ' selectionne la zone rt1.SelLength = LongueurPattern rt1.SelColor = colred ' highlight rt1.SelBold = True ' et en gras start = pos + LongueurPattern ' on ajuste la position de depart pos = InStr(start, s, pat) ' et on cherche l'occurence suivante Wend rt1.SelStart = 1 ' on se remet au debut rt1.Visible = True ' et on raffiche le composant End Sub
voili voila
"jean-marc" a écrit dans le message de news:3fd47710$0$295$
"François Picalausa" wrote in message news:# > "sam" a écrit dans le message de > news:02de01c3bd80$98ec6a80$ > > en utilisant la methode find tour à tour pout trouver la > > prochaine occurence, et en mettant ensuite le texte en > > gras par exemple, ça marche bien sauf sur de gros fichier > > texte dans lesquels il y a beaucoup d'occurences > > trouvées.dans ce ca c'est très long on a l'impression que > > le traitement se fait ligne par ligne..... > > Bonjour/soir, > Tu peux essayer en utilisant directement le message EM_FINDTEXT: >
icheditcontrols/richeditcontrolreference/richeditmessages/em_findtext.asp > > Masquer le richtext pendant les changements peut accélerer le
traitement.
>
Voici un petit bout de code: Il trouve et highlight 1872 occurences dans un texte de 188 Ko (5824
lignes)
en 1 seconde (sur une vieille machine) Comme le dit François, masquer le controle accélère énormément les choses.
RT1 est le nom du rich text box. Text2 est le text box dans lequel tu
saisis
ton pattern.
Private Sub Command2_Click() Dim start As Long Dim s As String Dim pos As Long Dim pat As String Dim l As Long Dim n As Long Dim colred As Long
pat = Text2.Text ' le pattern à trouver l = Len(pat) ' longueur du pattern s = rt1.Text ' on stocke dans s une copie de travail
start = 1 ' on commence au premier caractere colred = RGB(255, 0, 0) ' calcul une fois pour toute de la couleur de highlighting (rouge) rt1.Visible = False ' masquer le controle pos = InStr(start, s, pat) ' trouve la premiere occurence
While pos <> 0 ' tant que il y a des occurences rt1.SelStart = pos - 1 ' selectionne la zone rt1.SelLength = l rt1.SelColor = colred ' highlight rt1.SelBold = True ' et en gras start = pos + l ' on ajuste la position de depart pos = InStr(start, s, pat) ' et on cherche l'occurence suivante Wend rt1.SelStart = 1 ' on se remet au debut rt1.Visible = True ' et on raffiche le composant End Sub
Jean-Marc
j'ai oublié qu'on confond facilement la lettre L et le chiffre 1 avec
certaines fonts.
revoici le programme, j'ai remplacé ma variable l (lettre L) par
LongueurPattern ...
Private Sub Command2_Click()
Dim start As Long
Dim s As String
Dim pos As Long
Dim pat As String
Dim LongueurPattern As Long
Dim n As Long
Dim colred As Long
pat = Text2.Text ' le pattern à trouver
LongueurPattern = Len(pat) ' longueur du pattern
s = rt1.Text ' on stocke dans s une copie de travail
start = 1 ' on commence au premier caractere
colred = RGB(255, 0, 0) ' calcul une fois pour toute de la couleur de
highlighting (rouge)
rt1.Visible = False ' masquer le controle
pos = InStr(start, s, pat) ' trouve la premiere occurence
While pos <> 0 ' tant que il y a des occurences
rt1.SelStart = pos - 1 ' selectionne la zone
rt1.SelLength = LongueurPattern
rt1.SelColor = colred ' highlight
rt1.SelBold = True ' et en gras
start = pos + LongueurPattern ' on ajuste la position de depart
pos = InStr(start, s, pat) ' et on cherche l'occurence suivante
Wend
rt1.SelStart = 1 ' on se remet au debut
rt1.Visible = True ' et on raffiche le composant
End Sub
voili voila
"jean-marc" <jean-marc.dupont@vcs-europe.com> a écrit dans le message de
news:3fd47710$0$295$ba620e4c@reader5.news.skynet.be...
"François Picalausa" <fpicalausa@chez.com> wrote in message
news:#BEgFqYvDHA.2080@TK2MSFTNGP10.phx.gbl...
> "sam" <s.petitseb@laposte.net> a écrit dans le message de
> news:02de01c3bd80$98ec6a80$a001280a@phx.gbl
> > en utilisant la methode find tour à tour pout trouver la
> > prochaine occurence, et en mettant ensuite le texte en
> > gras par exemple, ça marche bien sauf sur de gros fichier
> > texte dans lesquels il y a beaucoup d'occurences
> > trouvées.dans ce ca c'est très long on a l'impression que
> > le traitement se fait ligne par ligne.....
>
> Bonjour/soir,
> Tu peux essayer en utilisant directement le message EM_FINDTEXT:
>
icheditcontrols/richeditcontrolreference/richeditmessages/em_findtext.asp
>
> Masquer le richtext pendant les changements peut accélerer le
traitement.
>
Voici un petit bout de code:
Il trouve et highlight 1872 occurences dans un texte de 188 Ko (5824
lignes)
en 1 seconde (sur une vieille machine)
Comme le dit François, masquer le controle accélère énormément les choses.
RT1 est le nom du rich text box. Text2 est le text box dans lequel tu
saisis
ton pattern.
Private Sub Command2_Click()
Dim start As Long
Dim s As String
Dim pos As Long
Dim pat As String
Dim l As Long
Dim n As Long
Dim colred As Long
pat = Text2.Text ' le pattern à trouver
l = Len(pat) ' longueur du pattern
s = rt1.Text ' on stocke dans s une copie de travail
start = 1 ' on commence au premier caractere
colred = RGB(255, 0, 0) ' calcul une fois pour toute de la couleur de
highlighting (rouge)
rt1.Visible = False ' masquer le controle
pos = InStr(start, s, pat) ' trouve la premiere occurence
While pos <> 0 ' tant que il y a des occurences
rt1.SelStart = pos - 1 ' selectionne la zone
rt1.SelLength = l
rt1.SelColor = colred ' highlight
rt1.SelBold = True ' et en gras
start = pos + l ' on ajuste la position de depart
pos = InStr(start, s, pat) ' et on cherche l'occurence suivante
Wend
rt1.SelStart = 1 ' on se remet au debut
rt1.Visible = True ' et on raffiche le composant
End Sub
j'ai oublié qu'on confond facilement la lettre L et le chiffre 1 avec certaines fonts. revoici le programme, j'ai remplacé ma variable l (lettre L) par LongueurPattern ...
Private Sub Command2_Click() Dim start As Long Dim s As String Dim pos As Long Dim pat As String Dim LongueurPattern As Long Dim n As Long Dim colred As Long
pat = Text2.Text ' le pattern à trouver LongueurPattern = Len(pat) ' longueur du pattern s = rt1.Text ' on stocke dans s une copie de travail
start = 1 ' on commence au premier caractere colred = RGB(255, 0, 0) ' calcul une fois pour toute de la couleur de highlighting (rouge) rt1.Visible = False ' masquer le controle pos = InStr(start, s, pat) ' trouve la premiere occurence
While pos <> 0 ' tant que il y a des occurences rt1.SelStart = pos - 1 ' selectionne la zone rt1.SelLength = LongueurPattern rt1.SelColor = colred ' highlight rt1.SelBold = True ' et en gras start = pos + LongueurPattern ' on ajuste la position de depart pos = InStr(start, s, pat) ' et on cherche l'occurence suivante Wend rt1.SelStart = 1 ' on se remet au debut rt1.Visible = True ' et on raffiche le composant End Sub
voili voila
"jean-marc" a écrit dans le message de news:3fd47710$0$295$
"François Picalausa" wrote in message news:# > "sam" a écrit dans le message de > news:02de01c3bd80$98ec6a80$ > > en utilisant la methode find tour à tour pout trouver la > > prochaine occurence, et en mettant ensuite le texte en > > gras par exemple, ça marche bien sauf sur de gros fichier > > texte dans lesquels il y a beaucoup d'occurences > > trouvées.dans ce ca c'est très long on a l'impression que > > le traitement se fait ligne par ligne..... > > Bonjour/soir, > Tu peux essayer en utilisant directement le message EM_FINDTEXT: >
icheditcontrols/richeditcontrolreference/richeditmessages/em_findtext.asp > > Masquer le richtext pendant les changements peut accélerer le
traitement.
>
Voici un petit bout de code: Il trouve et highlight 1872 occurences dans un texte de 188 Ko (5824
lignes)
en 1 seconde (sur une vieille machine) Comme le dit François, masquer le controle accélère énormément les choses.
RT1 est le nom du rich text box. Text2 est le text box dans lequel tu
saisis
ton pattern.
Private Sub Command2_Click() Dim start As Long Dim s As String Dim pos As Long Dim pat As String Dim l As Long Dim n As Long Dim colred As Long
pat = Text2.Text ' le pattern à trouver l = Len(pat) ' longueur du pattern s = rt1.Text ' on stocke dans s une copie de travail
start = 1 ' on commence au premier caractere colred = RGB(255, 0, 0) ' calcul une fois pour toute de la couleur de highlighting (rouge) rt1.Visible = False ' masquer le controle pos = InStr(start, s, pat) ' trouve la premiere occurence
While pos <> 0 ' tant que il y a des occurences rt1.SelStart = pos - 1 ' selectionne la zone rt1.SelLength = l rt1.SelColor = colred ' highlight rt1.SelBold = True ' et en gras start = pos + l ' on ajuste la position de depart pos = InStr(start, s, pat) ' et on cherche l'occurence suivante Wend rt1.SelStart = 1 ' on se remet au debut rt1.Visible = True ' et on raffiche le composant End Sub