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...
12 mars 2004 à 23:00
' 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
12 mars 2004 à 22:56
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
12 mars 2004 à 21:28
tu tape ton mot et tu recherche ds tout le texte. point.
12 mars 2004 à 18:57
L'utilisateur n'as aucun contrôle sur le curseur en fait si j'ai bien compris....
11 mars 2004 à 20:52
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.