cs_bobo91
Messages postés107Date d'inscriptiondimanche 27 juin 2004StatutMembreDernière intervention12 novembre 2006
-
25 juil. 2004 à 01:44
ShareVB
Messages postés2676Date d'inscriptionvendredi 28 juin 2002StatutMembreDernière intervention13 janvier 2016
-
26 juil. 2004 à 10:10
bonjour tous le monde merci encore a ceux qui pourrons m'aider . pour le moment j'esaye de faire un editeur hexadecimal cela dit.
je voudrai faire un systeme de recherche de chaine hexadecimale
dans un textbox.la recherche terminer me converti en rouge la chaine trouver.
cs_bobo91
Messages postés107Date d'inscriptiondimanche 27 juin 2004StatutMembreDernière intervention12 novembre 2006 25 juil. 2004 à 14:32
slt tous le monde.
donc j'ai essayer ton code vbshare mais c'a ne fonctionnai
pas pour toute les solution donc je met en evidence ma source pour que les autre qui voudrais faire exactement la meme chose.
j'ai tester de mon coter et ca fonctionne.
j'espere que je me suis pas trop pris la tete.
mais si vous trouver plus simple n'estiter a poster vos sources.
merci d'avance.
et merci vbshare pour l'idee du richtext.
Dim pos As Long
rtb.Text = "1234 5678"
rtb.SelStart = 0
rtb.SelLength = Len(rtb.Text)
rtb.SelColor = vbBlack
rtb.SelLength = 0
pos = InStr(Replace(rtb.Text, " ", vbNullString), Text1) - 1
Debug.Print pos
If pos >= 0 Then
perte = Int((pos + Len(Text1)) / 4) 'Pour la perte de 1 caractere tous les 4 caracteres'
rtb.SelStart = pos
rtb.SelLength = Len(Text1) + perte
rtb.SelColor = vbRed
rtb.SelLength = 0
End If
cs_bobo91
Messages postés107Date d'inscriptiondimanche 27 juin 2004StatutMembreDernière intervention12 novembre 2006 25 juil. 2004 à 19:42
oui tu as raison share vb (lol) j'ai modifier le mien et ca semble fonctionner aussi.le tien fonctionne parfaitement mais dis moi com mem si le mien fonctionne pour toute solution merci beaucoup a toi.j'aurai deux exemple comme ca.
Dim pos As Long
rtb.Text = "2021 2223 2425 2627 2829 3031 3233"
rtb.SelStart = 0
rtb.SelLength = Len(rtb.Text)
rtb.SelColor = vbBlack
rtb.SelLength = 0
pos = InStr(Replace(rtb.Text, " ", vbNullString), Text1) - 1
Debug.Print pos
If pos >= 0 Then
perte = Int((pos / 4)) 'Pour la perte de 1 caractere tous les 4 caracteres
Debug.Print perte
rtb.SelStart = pos + perte
rtb.SelLength = Len(Text1) + Int((Len(Text1) / 4))
rtb.SelColor = vbRed
rtb.SelLength = 0
End If
ShareVB
Messages postés2676Date d'inscriptionvendredi 28 juin 2002StatutMembreDernière intervention13 janvier 201626 25 juil. 2004 à 20:23
salut
rtb.SelLength = Len(Text1) + Int((Len(Text1) / 4)) ne marche pas :
exemple : "1111 2222 3333" et je cherche "12" ou "23"
Len(Text1) = 2
Len(Text1)/4=0.5
Int(0.5)=0
rtb.SelLength = 2 or devrait être 3 "1 2"
ShareVB
Messages postés2676Date d'inscriptionvendredi 28 juin 2002StatutMembreDernière intervention13 janvier 201626 26 juil. 2004 à 10:10
salut
déjà \ est la division entière contrairement à /... (ca évite Int(machin/4) et c plus rapide niveau cycle processeur)
pos mod 4 : ca calcule à combien de caractères la chaîne trouvée est de l'espace le plus proche :exemple "1234 5678 9123 4567" et "891234567", pos 7, donc pos mod 4 3(4ème caractère après l'espace) donc (2+9)\4 = 2 espaces dedans
pour savoir le nombre d'espaces dans la chaîne, il faut rajouter la position relative de la chaîne par rapport à l'espace précédant : une recherche de 4 carac peut avoir 0 ou 1 espace suivant sa place. Il faut se placer comme si on recherchait une chaine qui commencait toujours après un espace de sorte que sa longueur est significative du nombre d'espaces qu'elle contient. Depuis un espace, une chaine de 1,2,3 ou 4 caractères n'a pas d'espace, une chaine de 5,6,7,8 carac à 1 espace...
en rajoutant la position relative, on se retrouve dans ce cas : une chaine de 4c à 3c d'un espace <=> une chaine de 7c <=> un espace...une chaine de 4c à 0c <=> 0 espace...
j'espère que je suis clair parce que c'est vrai que ce n'est pas forcèment évident