Recherche mot suivant dans un texte...

Soyez le premier à donner votre avis sur cette source.

Snippet vu 6 128 fois - Téléchargée 27 fois

Contenu du snippet

Code de la recherche suivante du note pad, en 6 lignes de code.

Ca casse pas des briques, mais bon, comme j'en ai vu qui se prennait la tête avec ça et que j'ai du en faire une pour moi, ca peut peut être rendre service... :)

On considere un bouton Suivant, une case textbox TxtRech pour le mot recherché et un texte contenu dans une autre txtbox, texte

Source / Exemple :


Public Position As Integer 'Memorisation de la position entre 2 recherches

Private Sub Suivant_Click()
    'Recherche textuelle à partir de la position actuelle 
            Position = InStr(position + 1, Texte.Text, TxtRech.Text)
            Texte.Text.SelStart = position - 1
            Texte.Text.SelLength = Len(TxtRech.Text)
            Texte.Text.SetFocus
End Sub

Private Sub TxtRech_Change()
    'Une nouvelle recherche est commencée, on remet la position à zero
    position = 0
End Sub

Conclusion :


Des explications ?

Dés que vous tapez un texte, la position de recherche dans le texte se remet à zero pour une nouvelle recherche.

Ensuite, on effectue classiquement la recherche à position + 1 :

. Si c'est la première recherche, on part donc de 1, logique
. Si on à déjà trouvé une occurence, on décale d'un cran pour chercher l'occurence suivante et pas retomber sur la même. (Pour trouvé to position 91 ("...total..."), prochaine recherche commence à position 92, soit à(" ...otal...")

selstart, c'est le début de la selection, on lui retranche -1 parce que la selection commence aprés cette position et qu'on veut prendre le caractere du debut. (Si position = 91, selstart à 91 commencera à selectionner apres le caractere 91, soit ici à partir de "otal", donc en decalant de 1 on pourra prendre "total"

.Sellength c'est la longeur du txte seletionner, pas compliqué

.setfocus execute la selection

Voili voilou...

A voir également

Ajouter un commentaire

Commentaires

surfzoid
Messages postés
467
Date d'inscription
vendredi 15 août 2003
Statut
Membre
Dernière intervention
21 avril 2010

allez ma derniere tournée lol:
' ici c avec la méthode instruc que je trouve + long Lol
'If trouve "" Then: trouve 1
'While trouve > nbre
'trouve = InStr(trouve, rt1.Text, Instruction)
'If trouve = 0 Then: GoTo fin
'rt1.SelStart = trouve - 1
'If Instruction = "J" Then
'rt1.SelLength = 3
'Else
'rt1.SelLength = Len(Instruction)
'End If
'rt1.SelColor = couleur
'trouve = trouve + Len(Instruction)
'If nbre > trouve Then
'Exit Sub
'Else
'nbre = nbre + 1
'End If
'If annul = 0 Then: GoTo fin
'DoEvents
'Wend
'nbre = 0
'trouve = 0
'rt1.SelStart = 0

en fait je recherche tjr le suivant mé avec le mem mot et jusqua la fin du file et apré chaque ocurence je decalle le point de depart de la longueur de l ocurence
surfzoid
Messages postés
467
Date d'inscription
vendredi 15 août 2003
Statut
Membre
Dernière intervention
21 avril 2010

allez garçon la meme chose :
celle est tjr issue de ma source (patcheur) mé en fait je ne propose pas a l utilisateur de cherché un mot ,c plutot moi qui cherche une serie de mot pour ensuite les colorié en différente couleur
Public Function ColorWord(Word As String, Color As Long, txtCode As RichTextBox, Optional Style As String, Optional ByVal lCursor As Long, Optional ByVal Length As Long)
Dim Arguments As Boolean
Dim Cursor As Long
Cursor = lCursor
Cursor = txtCode.find(Word, Cursor - 1, , rtfWholeWord) '- 1
While IIf(Length > 0, (Cursor < lCursor + Length) And (Cursor > -1), Cursor > -1)
txtCode.SelColor = Color
txtCode.SelBold = IIf(UCase(Style) Like "*/B/*", True, False)
txtCode.SelItalic = IIf(UCase(Style) Like "*/I/*", True, False)
txtCode.SelUnderline = IIf(UCase(Style) Like "*/U/*", True, False)
Cursor = txtCode.find(Word, Cursor + 1, , rtfWholeWord)
DoEvents
Wend
End Function

il fo ensuite appelé cette fonction comme ca par ex:
ColorWord "BYTE", vbBlue, rt1, , StartFind + 1, LengthFind
ColorWord "DUP", vbBlue, rt1, , StartFind + 1, LengthFind
ColorWord "NOP", vbRed, rt1, , StartFind + 1, LengthFind
ColorWord "POP", vbRed, rt1, "/I/", StartFind + 1, LengthFind
ColorWord "CALL", vbRed, rt1, "/I/", StartFind + 1, LengthFind
ColorWord "JUMP", vbRed, rt1, "/I/", StartFind + 1, LengthFind
ColorWord "XOR", vbRed, rt1, "/I/", StartFind + 1, LengthFind
ColorWord "ADD", vbRed, rt1, "/I/", StartFind + 1, LengthFind
ColorWord "ADC", vbRed, rt1, , StartFind + 1, LengthFind
ColorWord "CMP", vbRed, rt1, , StartFind + 1, LengthFind
ColorWord "OR", vbRed, rt1, , StartFind + 1, LengthFind
ColorWord "INC", vbYellow, rt1, , StartFind + 1, LengthFind
ColorWord "MOV", vbYellow, rt1, , StartFind + 1, LengthFind
ColorWord "MOVS", vbYellow, rt1, , StartFind + 1, LengthFind
ColorWord "DEC", vbYellow, rt1, , StartFind + 1, LengthFind
ColorWord "40", vbMagenta, rt1, , StartFind + 1, LengthFind
ColorWord "DWORD", vbCyan, rt1, , StartFind + 1, LengthFind
ColorWord "ECX", vbCyan, rt1, , StartFind + 1, LengthFind
tu y met ce que tu veu comme mot
cs_fjohn
Messages postés
11
Date d'inscription
lundi 5 janvier 2004
Statut
Membre
Dernière intervention
17 août 2005

Bah, c'est juste une recherche du mot suivant, tout court, vraiment comme je l'ai dis précédement, c'est pas sensé cassez des briques...

tu tape ton mot et tu recherche ds tout le texte. point.
sibi12
Messages postés
337
Date d'inscription
jeudi 19 décembre 2002
Statut
Membre
Dernière intervention
15 avril 2006

J'ai du effetivement mal comprendre le but de la source...Autant pour moi..

L'utilisateur n'as aucun contrôle sur le curseur en fait si j'ai bien compris....
dionysos6868
Messages postés
310
Date d'inscription
jeudi 4 septembre 2003
Statut
Membre
Dernière intervention
9 juin 2005

Perso je connais les deux technique lui find qui est rapide l'autre un recherche meme si elle reste simple pour la plupart des developpeur mais il ne faut pas oublier que les debutant recherche je style de code pour comprendre et je la trouve tres bien .

voila

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.