cs_lacomm
Messages postés298Date d'inscriptionlundi 14 juin 2004StatutMembreDernière intervention 5 juillet 2013
-
24 août 2004 à 16:28
Zigarn
Messages postés106Date d'inscriptionmardi 13 juillet 2004StatutMembreDernière intervention26 janvier 2005
-
25 août 2004 à 15:33
LaComm Je suis un peu perdu. Je dois comparer deux chaines, du genre:
Je suis le docteur (stringacomparer)
qui est dans un richtextbox
avec des chaines qui sont dans un fichier texte cible, du genre:
Je suis le docteur (stringcible)
Tu es le docteur
J'emploie ceci:
stringacomparer=richtextbox1.text
open "c:/fichiercible.txt" for input as #2
do while not EOF #2
monresul = Instr(1, stringacomparer, stringcible,1)
'j'affiche le résultat dans un deuxième txtbox:
if monresul <>0 then richtextbox2.text = stringcible
'je print dans un fichier
print # 1, stringacomparer
loop
Ca marche bien tant qu'il n'y a qu'une string à comparer, mais dès qu'il y en deux, seul le deuxième stringcible apparaît dans le textbox2, alors que dans le fichier, les deux string apparaissent deux fois.
J'ai également tenté l'objet find, mais là j'ai des reconnaissances fausses.
D'autre part, je voudrais aussi 'paramétrer' le degré de reconnaissance en indiquant dans le fichier texte cible des string comme "je suis le doc***", un peu comme des REGEX.
Merci de votre patience
Zigarn
Messages postés106Date d'inscriptionmardi 13 juillet 2004StatutMembreDernière intervention26 janvier 2005 24 août 2004 à 16:42
Cela me semble normal que seule la dernière valeur soit dans ton controle RichTextBox2 puisque tu l'écrase à chaque coup !
-------------------------------------------------
Débutant ... mais pas pour longtemps !
cs_lacomm
Messages postés298Date d'inscriptionlundi 14 juin 2004StatutMembreDernière intervention 5 juillet 20131 24 août 2004 à 16:49
LaComm Beuh.. j'ai de nouveau les deux strings en double dans mon fichier # 2
et cette fois, plus rien dans le textbox. En fait, je voudrais comparer la stringàcomparer1 avec tous les stringcibles, puis passer à la stringacomparer2 et de nouveau tous les stringcibles.. Et puis, j'aimerais autant l'objet Find, pour colorer les stringcibles qui apparaissent dans le etxbox2, bon enfin, allez c'est pas obligé..
cs_lacomm
Messages postés298Date d'inscriptionlundi 14 juin 2004StatutMembreDernière intervention 5 juillet 20131 25 août 2004 à 09:50
LaComm Le code d'italia marche mais j'ai fait une erreur de conception. D'accord, j'avais pas précisé, donc je précise:
Dans un TextBox, l'utilisateur saisit du texte :
ex 1 : Je suis le docteur
Tu es le patient
mais il pourrait saisir ceci:
ex 2: Tu es le patient
Je suis le docteur
Dans le fichier texte, qui sert de cible ou de DB, on a:
Je suis le docteur (commentaire 1
Tu es le patient (commentaire 2
Dans le deuxième TextBox, je voudrais qu'apparaissent, et là je me suis planté dans la conception, d'abord les stringàcomparer pour avoir le même ordre (et pas les cibles comme j'avais dit) et ensuite si possible en couleur, un commentaire qui correspond à la stringcible matchée:
ex 1: Je suis le docteur (commentaire 1
Tu es le patient (commentaire 2
ex 2: Tu es le patient (commentaire 2
Je suis le docteur (commentaire 1
J'imagine que je dois créer maintenant la variable commentaire et faire un truc du style
If monresul <>0 then richtextbox2.text = richtextbox1.text & Chr$(13) & commentaire
J'essaie ça, mais j'ai d'autres questions:
- Find ne permet-t-il pas une recherche plus élaborée, notemment avec les REGEX?
- faut-il plutôt utiliser des bases de données plutôt qu'un ficheir texte ?
Zigarn
Messages postés106Date d'inscriptionmardi 13 juillet 2004StatutMembreDernière intervention26 janvier 2005 25 août 2004 à 10:00
Sinon pour utiliser l'équivalent des regexpr je pense que c'est Like, comme l'a dit true_picpic. MSDN :
Permet de comparer deux chaînes.
Syntaxe : result = string Like pattern
Exemples :
Dim MyCheck
MyCheck = "aBBBa" Like "a*a" ' Renvoie True.
MyCheck = "F" Like "[A-Z]" ' Renvoie True.
MyCheck = "F" Like "[!A-Z]" ' Renvoie False.
MyCheck = "a2a" Like "a#a" ' Renvoie True.
MyCheck = "aM5b" Like "a[L-P]#[!c-e]" ' Renvoie True.
MyCheck = "BAT123khg" Like "B?T*" ' Renvoie True.
MyCheck = "CAT123khg" Like "B?T*" ' Renvoie False.
-------------------------------------------------
Débutant ... mais pas pour longtemps !
cs_lacomm
Messages postés298Date d'inscriptionlundi 14 juin 2004StatutMembreDernière intervention 5 juillet 20131 25 août 2004 à 10:24
Sorry, Zigarn, j'ai enfin compris l'écrasement ! Le code marche sauf que maintenant, j'ai des commentaires du genre :/rtf1/ansi/ansicpg1252/deflang2060/fontb/../MS sans Serif// textsource /blabla/ commentaire.
J'ai la même chose sans les commentaires, j'imagine que ca vient plutôt du fichier que du code.
Merci aussi pour Like, je n'ai que de la docu générale sur VB6 mais pas MSDN
Zigarn
Messages postés106Date d'inscriptionmardi 13 juillet 2004StatutMembreDernière intervention26 janvier 2005 25 août 2004 à 10:33
Pour un peu plus d'info sur les pattern de vb :
? <-> Tout caractère unique.
* <-> Aucun ou plusieurs caractères.
# <-> Tout chiffre unique (de 0 à 9).
[charlist] <-> Tout caractère unique compris dans l'argument charlist.
[!charlist] <-> Tout caractère unique non compris dans l'argument charlist.
Plus ensuite le - pour les intervalles
Et pour matcher un de ces caractères, tu le mets entre crochet [*] ou [[] par exemple.
Après, pour tes /rtf1/..., je sais pas. Ca vient peut-être d'un problème de formatage (ANSI, MS sans Serif, ...) ?
-------------------------------------------------
Débutant ... mais pas pour longtemps !
cs_lacomm
Messages postés298Date d'inscriptionlundi 14 juin 2004StatutMembreDernière intervention 5 juillet 20131 25 août 2004 à 12:34
Honte sur moi ! après avoir renommé, reformaté et modifié le fichier dans tous les sens, je me rends compte que j'ai oublié le .text dans richtextbox2.
Par contre, TextRTF ne marche pas
Et à chaque reconnaissance, j'ai tout le textbox2 qui apparaît:
textbox de saisie:
Je suis le docteur
Tu es le patient
textbox de sortie:
Je suis le docteur
Tu es le patient (commentaire 1
Je suis le docteur
Tu es le patient (commentaire 2
J'envisage de passer par un fichier intermédiaire qui splitte les saisies
et donc je mettrais dans le TextBox le numéro de la chaine splittée et son commentaire.
Zigarn
Messages postés106Date d'inscriptionmardi 13 juillet 2004StatutMembreDernière intervention26 janvier 2005 25 août 2004 à 12:43
En y réfléchissant, cela me semble normal que toute la TextBox de saisie (RichTextBox1 si j'ai bien compris) soit affichée si Text = RicTextBox1.Text & Commentaire .
Il faudrait plutot mettre ChaineTrouvée & Commentaire où ChaineTrouvée est la sous chaine de RichTextBox qui correspond à ton pattern.
-------------------------------------------------
Débutant ... mais pas pour longtemps !
cs_lacomm
Messages postés298Date d'inscriptionlundi 14 juin 2004StatutMembreDernière intervention 5 juillet 20131 25 août 2004 à 15:01
Ca marche bien quand le textbox de saisie est dans l'ordre du fichier cible. Par contre, dans un autre ordre, j'obtiens le fichier-cible. Je dois absolument splitter le textbox de saisie, je crois.
Zigarn
Messages postés106Date d'inscriptionmardi 13 juillet 2004StatutMembreDernière intervention26 janvier 2005 25 août 2004 à 15:05
Je pense que si échangeait tes deux paramètre de chaines dans ton InStr tu pourrais du coup les avoir dans l'ordre du TextBox de saisie.
-------------------------------------------------
Débutant ... mais pas pour longtemps !
Zigarn
Messages postés106Date d'inscriptionmardi 13 juillet 2004StatutMembreDernière intervention26 janvier 2005 25 août 2004 à 15:33
C'était juste une suggestion.
Sinon, si tu veux afficher les chaines trouvé dans 1 qui son dans 2 masi dans l'ordre où elle sont dans 1, il faudrait essayer de verifier pour chaque chaine de 1 si elle est dans 2 et alors l'afficher avec son commentaire.
Parce que si tu vérifie pour chaque chaine de 2 si elle est dans 1 et l'affiche alors, tu les mets dans l'ordre de 2.
(Je sais pas si je suis très clair ...)
-------------------------------------------------
Débutant ... mais pas pour longtemps !