JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Rechercher une séquence Dim 7 Oct 2018 - 14:50 | |
| Un petit gadget pour rechercher une séquence donnée dans tous les sources .bas (ça peut évidemment servir à rechercher une séquence quelconque dans une série de fichiers texte quelconque). On utilise la commande 'FIND' (Ms-Dos, pas panoramic) qui est très rapide: - Code:
-
' Recseqbas: Recherche des occurences d'une séquence dans tous les sources .bas LABEL Recher DIM rep$,seq$,casse%,ntr% rep$ = "C:\PANORAMIC\*.bas": ' répertoire des sources .bas WIDTH 0,400: HEIGHT 0,120: BORDER_SMALL 0: FONT_SIZE 0,10: FONT_BOLD 0 CAPTION 0," RECHERCHE D' UNE SÉQUENCE DANS LES SOURCES .BAS" COLOR 0,190,255,255 ALPHA 1: LEFT 1,10: CAPTION 1," - Répertoire: "+rep$+" -": FONT_COLOR 1,0,0,255 ALPHA 2: TOP 2,TOP(1)+18: CAPTION 2," Séquence cherchée : ": COLOR 2,255,255,0 EDIT 3: TOP 3,TOP(2)+15: WIDTH 3,280 CHECK 4: TOP 4,TOP(3): LEFT 4,LEFT(3)+WIDTH(3)+5 CAPTION 4,"Respecter" ALPHA 5: TOP 5,TOP(4)+15: LEFT 5,LEFT(4)+20: CAPTION 5,"la casse" BUTTON 6: TOP 6,TOP(3)+23: LEFT 6,WIDTH(3)/2-40: CAPTION 6,"Chercher" ON_CLICK 6,Recher FORM 10: HIDE 10: TOP 10,TOP(0)+HEIGHT(0): WIDTH 10,600: HEIGHT 10,800 LIST 11: PARENT 11,10: FULL_SPACE 11: FONT_NAME 11,"DejaVU Sans Mono": FONT_SIZE 11,10 FONT_BOLD 11 END ' ============================================================================== Recher: seq$ = TEXT$(3) casse% = 0: IF CHECKED(4) = 1 THEN casse% = 1 RecSeqBas(seq$,casse%) CLIPBOARD_PASTE 11 CAPTION 10,"Séquence trouvée dans "+STR$(ntr%)+" fichiers." SHOW 10 RETURN ' ============================================================================== SUB RecSeqBas(seq$,casse%) ' Recherche de la séquence seq$ dans tous les sources .bas (C:\PANORAMIC\*.bas) ' Si casse% = 1: respecter la casse ' Résultats dans le clipboard: nom des fichiers et lignes trouvées DIM_LOCAL ch$,cc$,q$,rc$,i%,k%,a$,b$,nl$,tt%,dl% q$ = CHR$(34): rc$ = CHR$(13)+CHR$(10) cc$ = "/I": IF casse% = 1 THEN cc$ = "": ' respecter la casse dl% = 800: LIST dl%: HIDE dl% EXECUTE_WAIT "cmd.exe|/c FIND /N "+cc$+" "+q$+seq$+q$+" "+rep$+" | clip" CLIPBOARD_PASTE dl%: ntr% = 0 ch$ = "" FOR i% = 1 TO COUNT(dl%) a$ = ITEM_READ$(dl%,i%) tt% = 0 IF LEFT$(a$,1) = "-" i% = i%+1: IF i%>COUNT(dl%) THEN EXIT_FOR b$ = ITEM_READ$(dl%,i%) IF b$<>"" IF tt% = 0 a$ = FILE_EXTRACT_NAME$(RIGHT_POS$(a$,12)) ch$=ch$+"***** "+a$+" *****"+rc$: tt% = 1: ntr% = ntr%+1: ' nom fichier END_IF WHILE b$<>"" b$ = RIGHT_POS$(b$,2) k% = INSTR(b$,"]"): nl$ = LEFT$(b$,k%-1): b$ = RIGHT_POS$(b$,k%+1) nl$ = RIGHT$(" "+nl$,4)+" : " ch$ = ch$+nl$+b$+rc$ i% = i%+1: b$ = ITEM_READ$(dl%,i%) END_WHILE END_IF END_IF NEXT i% DELETE dl% CLIPBOARD_STRING_COPY ch$ END_SUB ' ============================================================================== A ajuster en tête le répertoire des sources .bas rep$. | |
|