Mais comment faire une recherche d'une chaine de caractères dans un fichier ?
Rahemm
Messages postés3Date d'inscriptionmardi 28 mars 2006StatutMembreDernière intervention 3 avril 2006 1 avril 2006 à 01:26
slt merci pour le code mais slp vous pouver m'aide a faire un code de recherch sur un bas de donne (titre de livre par ex)
et en resultat s'afich tt les info consernon cee livre
merci
cs_ABF
Messages postés227Date d'inscriptionsamedi 21 mai 2005StatutMembreDernière intervention26 avril 2012 18 févr. 2006 à 18:54
Voilà : "améliorations"
cs_ABF
Messages postés227Date d'inscriptionsamedi 21 mai 2005StatutMembreDernière intervention26 avril 2012 18 févr. 2006 à 09:49
Bonjour,
J'ai testé la rapidité des 2 codes soit : Instr() et ma fonction et y'a pas photo , la fonction est plus lente.
Pour katsankat: j'ai dit plus haut qu'il était possible d'allonger les possibilités de paramètres commes celles que tu as cité. De plus, pour les variants, y'a juste à mettre les variables les unes au dessous des autres donc je vais refaire cela dès que possible (pas complet car ce n'est pas mon objectif principale et que la ci belle fct Instr() existe).
Voila
Merci de vos commentaires.
ABF
katsankat
Messages postés571Date d'inscriptionvendredi 30 décembre 2005StatutMembreDernière intervention12 juillet 20123 18 févr. 2006 à 01:46
Bonjour,
Si c'est fait pour expliquer comment fonctionne InStr, il reste des choses à faire car InStr():
- accepte un argument supplémentaire: la position de départ
- prend également un 4e paramètre, facultatif (comparaison binaire et respect de la casse).
- retourne 0 si la chaine 1 est nulle
- retourne 0 si la chaine 2 est introuvable
- retourne 0 si posdépart > len(chaine2)
- retourne NULL si string 1 est NULL
- retourne NULL si string 2 est NULL
- retourne posdepart si string2 est de longueur nulle
- sinon retourne la position à laquelle la chaine 1 est trouvée.
Or la fonction ne retourne rien.
Déclarer 7 variants ça fait beaucoup juste pour obtenir une position.
J' explique: en faisant
Dim a, b, FinTxt, LongTxtTot, LongTxtRech As Long
Dim L1TxtTot, L1txtRech, MotTxt, MotRech As String
Tu déclares 7 variants, 1 long et 1 string. Un variant est stocké sur 22 octets+la longueur de la chaîne...
Dans:
MotRech = vbNullString
LongTxtRech = Len(MotRech)
...La fonction len() pourrait être évitée.
C'est un bon début.
cs_MasterHack
Messages postés586Date d'inscriptionjeudi 18 septembre 2003StatutMembreDernière intervention13 février 20082 17 févr. 2006 à 22:49
bravo, vraiment!!
1-meme si,je peux me tromper,tu ne cainnaisser pas la fonction instr ou meme instrrev, tu as penser a creer une solution au cas present.bien pensé
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013130 17 févr. 2006 à 19:54
Oui tout à fait, surtout que la fonction InStr doit être plus rapide que la tienne, donc évitez d'utiliser cette fonction si votre seul but est de trouver l'occurence d'une chaîne dans une autre : la fonction InStr donnera le même résultat en plus rapide.
DarK Sidious
cs_schtroumf
Messages postés59Date d'inscriptionmercredi 8 octobre 2003StatutMembreDernière intervention22 juillet 2008 17 févr. 2006 à 19:34
Ha ok, mais il faudrait que tu précises que ta source a un caractère plus pédagogique qu'utile tel quelle :)
cs_ABF
Messages postés227Date d'inscriptionsamedi 21 mai 2005StatutMembreDernière intervention26 avril 2012 17 févr. 2006 à 18:51
Bonsoir,
Justement, j'ai fait cela pour les débutants qui voudraient s'initier aux boucles mais aussi pour expliquer comment fonctionne cette fonction VB. Et je pense qu'avec ma source il est possible de faire des chose plus chiadés en la modifiant qu'avec Instr.
ABF
cs_schtroumf
Messages postés59Date d'inscriptionmercredi 8 octobre 2003StatutMembreDernière intervention22 juillet 2008 17 févr. 2006 à 18:17
Ton code est bien commenté et bien indenté mais je n'en vois pas vraiment le but. En effet il existe une fonction qui s'appelle InStr qui fait ça toute seule très bien, qui effectue la vérification de longueur des chaine et renvoit la position de la première occurrence...
cs_babboss
Messages postés121Date d'inscriptionvendredi 27 octobre 2000StatutMembreDernière intervention29 novembre 2006 17 févr. 2006 à 18:16
Salut,
Il ya deja une fonction en VB pour faire ca ;)
InStr(La_Ou_On_Commence_A_Chercher, String_Dans_Laquelle_Chercher, String_A_Trouvé)
exemple:
Chaine = "totoabcdMuhahahaLOL32687"
Position = Instr(0, Chaine, "LOL")
On a position qui vaut : 17
Voila @++
cs_ABF
Messages postés227Date d'inscriptionsamedi 21 mai 2005StatutMembreDernière intervention26 avril 2012 17 févr. 2006 à 16:50
Gestion d'erreur = vérification de la longueur de chaine...
Oups Désolé pour l'.exe je l'ai vu trop tard
7 juil. 2006 à 15:29
1 avril 2006 à 01:26
et en resultat s'afich tt les info consernon cee livre
merci
18 févr. 2006 à 18:54
18 févr. 2006 à 09:49
J'ai testé la rapidité des 2 codes soit : Instr() et ma fonction et y'a pas photo , la fonction est plus lente.
Pour katsankat: j'ai dit plus haut qu'il était possible d'allonger les possibilités de paramètres commes celles que tu as cité. De plus, pour les variants, y'a juste à mettre les variables les unes au dessous des autres donc je vais refaire cela dès que possible (pas complet car ce n'est pas mon objectif principale et que la ci belle fct Instr() existe).
Voila
Merci de vos commentaires.
ABF
18 févr. 2006 à 01:46
Si c'est fait pour expliquer comment fonctionne InStr, il reste des choses à faire car InStr():
- accepte un argument supplémentaire: la position de départ
- prend également un 4e paramètre, facultatif (comparaison binaire et respect de la casse).
- retourne 0 si la chaine 1 est nulle
- retourne 0 si la chaine 2 est introuvable
- retourne 0 si posdépart > len(chaine2)
- retourne NULL si string 1 est NULL
- retourne NULL si string 2 est NULL
- retourne posdepart si string2 est de longueur nulle
- sinon retourne la position à laquelle la chaine 1 est trouvée.
Or la fonction ne retourne rien.
Déclarer 7 variants ça fait beaucoup juste pour obtenir une position.
J' explique: en faisant
Dim a, b, FinTxt, LongTxtTot, LongTxtRech As Long
Dim L1TxtTot, L1txtRech, MotTxt, MotRech As String
Tu déclares 7 variants, 1 long et 1 string. Un variant est stocké sur 22 octets+la longueur de la chaîne...
Dans:
MotRech = vbNullString
LongTxtRech = Len(MotRech)
...La fonction len() pourrait être évitée.
C'est un bon début.
17 févr. 2006 à 22:49
1-meme si,je peux me tromper,tu ne cainnaisser pas la fonction instr ou meme instrrev, tu as penser a creer une solution au cas present.bien pensé
17 févr. 2006 à 19:54
DarK Sidious
17 févr. 2006 à 19:34
17 févr. 2006 à 18:51
Justement, j'ai fait cela pour les débutants qui voudraient s'initier aux boucles mais aussi pour expliquer comment fonctionne cette fonction VB. Et je pense qu'avec ma source il est possible de faire des chose plus chiadés en la modifiant qu'avec Instr.
ABF
17 févr. 2006 à 18:17
17 févr. 2006 à 18:16
Il ya deja une fonction en VB pour faire ca ;)
InStr(La_Ou_On_Commence_A_Chercher, String_Dans_Laquelle_Chercher, String_A_Trouvé)
exemple:
Chaine = "totoabcdMuhahahaLOL32687"
Position = Instr(0, Chaine, "LOL")
On a position qui vaut : 17
Voila @++
17 févr. 2006 à 16:50
Oups Désolé pour l'.exe je l'ai vu trop tard
Merci de laisser vos commentaire et notes.
ABF