Pedro
Nombre de messages : 1596 Date d'inscription : 19/01/2014
| Sujet: Besoin d'une fonction de recherche ultra rapide. Ven 7 Avr 2017 - 10:45 | |
| Bonjour.
@Klaus.
J'aurais besoin d'une fonction de recherche ultra-rapide, permettant de rechercher les occurrences de multiples mots dans un fichier.
Je m'explique:
Une chaîne contenant, par exemple: 'le chat boit du lait.'
La fonction devrait rechercher l'ensemble des occurrences de chacun des mots de la chaîne, dans un fichier texte, et placer le résultat global dans une combo, list ou memo.
Le but étant de limiter à une seule fois l'appel à la fonction de recherche, et non d'appeler de multiples fois la fonction SearchStringInTextFile.
La chaîne de départ pouvant avoir une longueur bien plus grande.
Est-ce possible ?
Merci de la suite. | |
|
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Besoin d'une fonction de recherche ultra rapide. Ven 7 Avr 2017 - 10:55 | |
| Certes. Pourquoi pas... Je vais regarder ce que cela implique. | |
|
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Besoin d'une fonction de recherche ultra rapide. Ven 7 Avr 2017 - 18:52 | |
| C'est fait ! Regarde la nouvelle version de KGF.dll. J'ai étendu les possibilités de la fonction SearchStringInTextFile. | |
|
Pedro
Nombre de messages : 1596 Date d'inscription : 19/01/2014
| Sujet: Besoin d'une fonction de recherche ultra rapide. Ven 7 Avr 2017 - 20:28 | |
| Bonsoir.
Un grand merci Klaus, la nouvelle commande fonctionne à merveille. Te serait-il possible d'ajouter une option permettant de ne pas afficher chacun des mots recherchés entre crochets, avant l'affichage de chacune des listes de résultats ?
Ceci afin d'éviter de réaliser un test sur chacune des lignes, afin d'éliminer celles-ci:
Exemple:
[chien] chien assis;ms;buharda;fs;architecture chien assis;ms;buhardilla;fs; chien assis;ms;buhardilla;fs;architecture chien basset;ms;basset;ms; chien d'aveugle;ms;lazarillo;ms; chien d'aveugle;ms;perro guía ou;ms; [très mauvais] chien de berger;ms;perro ovejero;ms;Zoologie chien de berger;ms;perro pastor;ms;Zoologie chien de chasse/de garde;ms;perro de caza/guardián;ms; [très mauvais]
La ligne en rouge étant inutile.
Merci de la suite. | |
|
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Besoin d'une fonction de recherche ultra rapide. Sam 8 Avr 2017 - 0:06 | |
| Télécharge la DLL à nouveau et essaie cette version du programme de démo. J'ai modifié comme suit: - Code:
-
OutType: chercher le critère entier: 0=clipboard 1=Memo 2=Combo 3=List chercher tous les mots séparément: 10=clipboard 11=Memo 12=Combo 13=List sans signaler mes mots chercher tous les mots séparément: 20=clipboard 21=Memo 22=Combo 23=List en signalant les mots
Si ça convient comme ça, je ferai la mise à jour de la doc. Voici le programme de démo adapté: - Code:
-
' test_SearchStringInTextFile.bas
label exec
dim res%, fic$, crit$, ind%
full_space 0 dll_on "KGF.dll" memo 1 : bar_both 1 : top 1,40 : width 1,300 : height 1,400 combo 2 : left 2,310 : top 2,40 : width 2,300 : height 2,400 list 3 : left 3,620 : top 3,40 : width 3,300 : height 3,400
option 10 : top 10,10 : left 10, 10 : caption 10,"Clipboard" option 11 : top 11,10 : left 11,110 : caption 11,"Memo" option 12 : top 12,10 : left 12,210 : caption 12,"Combo" option 13 : top 13,10 : left 13,310 : caption 13,"List" check 14 : top 14,10 : left 14,400 : caption 14,"Mots individuels" check 15 : top 15,10 : left 15,500 : caption 15,"Signaler les mots"
alpha 20 : top 20,10 : left 20,610 : caption 20,"Critère:" edit 21 : top 21,10 : left 21,680 : width 21,100 button 22 : top 22,10 : left 22,790 : caption 22,"Exécuter" : on_click 22,exec mark_on 10
fic$ = "dico_français_espagnol.txt" text 21,"travail" end
exec: ind% = checked(14)*10 if ind%>0 then ind% = ind% + checked(15)*10 crit$ = text$(21) ' res% = dll_call4("SearchStringInTextFile",adr(fic$),adr(crit$),LineNumbers%, AtStartOnly%, OutType%, OutHandle%) ' LineNumbers: 0=pas de numéros de ligne <>0=numéros de ligne ' AtStartOnly: 0=dans toute la ligne <>0=au début de la ligne uniquement ' OutType%: 0=clipboard 1=memo 2=combo 3=list if checked(10)=1 clear 1 res% = dll_call6("SearchStringInTextFile",adr(fic$),adr(crit$),1,1,ind%+0,0) clipboard_paste 1 end_if if checked(11)=1 clear 1 res% = dll_call6("SearchStringInTextFile",adr(fic$),adr(crit$),1,1,ind%+1,handle(1)) end_if if checked(12)=1 clear 2 res% = dll_call6("SearchStringInTextFile",adr(fic$),adr(crit$),1,1,ind%+2,handle(2)) end_if if checked(13)=1 clear 3 res% = dll_call6("SearchStringInTextFile",adr(fic$),adr(crit$),1,1,ind%+3,handle(3)) end_if message str$(res%)+" lignes trouvées" return
end
| |
|
Pedro
Nombre de messages : 1596 Date d'inscription : 19/01/2014
| Sujet: Besoin d'une fonction de recherche ultra rapide. Sam 8 Avr 2017 - 5:23 | |
| Bonjour.
Encore merci Klaus, cette fonction me convient très bien, et simplifie grandement mon code, grâce à un seul appel de dll. | |
|
Contenu sponsorisé
| Sujet: Re: Besoin d'une fonction de recherche ultra rapide. | |
| |
|