Pedro
Nombre de messages : 1594 Date d'inscription : 19/01/2014
| Sujet: Recherche d'un item dans un fichier. Lun 23 Sep 2019 - 18:21 | |
| Bonjour. J'ai longtemps planché sur la recherche de la méthode la plus rapide, permettant de rechercher un item dans un fichier. Et voici ma solution, qui fait simplement appel à la commande instr. Cette méthode est plus de 10 fois plus rapide que celle utilisée par appel d'une fonction de recherche de KGF !! - Code:
-
dim a$, crlf$, element$, f$, i%, k%, no%, param3%, res%, te$
dll_on "kgf"
crlf$=chr$(10)+chr$(13) f$="fichiers\indicatif_present_francais.txt"
if dll_call2("CreateStringList",1,0)=0 then res%=dll_call2("LoadStringList",1,adr(f$))
' list 3019:file_load 3019,f$
create_hide memo 3019:file_load 3019,f$ a$=text$(3019)
element$="#manger3"
i%=number_ticks for k%=1 to 1000 res%=instr(a$,element$) ' chercher(element$,3019,1) next k%
' memo: 156 ' List: 1891 ' dlist: 1719 ' StringList: 2063
caption 0,str$(res%)+": "+str$(number_ticks-i%)
' #manger3mange if res%>0 then message "Item: ["+mid$(a$,res%,instr_pos(a$,"#",res%+1)-res%-2)+"]"
' terminate end
sub chercher(element$,no%,param3%) if param3%=1 ' Recherche un élément dans une liste. ' On passe une chaîne de caractères en paramètre qui représente le début de l'élément recherché. ' On peut chercher également l'élément exact. ' La recherche est insensible à la casse. ' L'objet LIST ciblé peut être un objet Panoramic, dans n'importe quelle fenêtre, ou alors un objet LIST d'une application externe, Panoramic ou non.
' 0 = la recherche aboutit si le début d'un élément correspond au critère. ' 1 = la recherche aboutit si l'élément en sa totalité correspond au critère. ' res% fournit 0 si l'élément n'est pas trouvé. res%=dll_call3("SearchListBox",handle(no%),0,adr(element$)) else ' te$ ne doit pas égal à une chaîne vide. te$=" " if no%<21 ' Objets StringList. res%=dll_call3("SearchStringList",no%,adr(element$),adr(te$)) else ' Objets Dlist. res%=dll_call3("SearchStringList",object_internal(no%),adr(element$),adr(te$)) end_if end_if end_sub | |
|
jean_debord
Nombre de messages : 1266 Age : 70 Localisation : Limoges Date d'inscription : 21/09/2008
| Sujet: Re: Recherche d'un item dans un fichier. Mar 24 Sep 2019 - 8:46 | |
| Oui la recherche par INSTR dans une chaîne de caractères est souvent plus rapide !
Je l'utilise souvent dans mes programmes, p. ex. dans un éditeur ou un compilateur pour chercher dans une liste de mots-clés. | |
|