FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  GroupesGroupes  Connexion  
Derniers sujets
» Mah-Jong américain
par Jean Claude Hier à 19:37

» StratégoV8 et V9
par Jean Claude Hier à 13:18

» Problème avec Deepl
par Klaus Hier à 0:34

» Déformation d'image en trapèze
par Klaus Dim 14 Jan 2018 - 16:22

» Quelques nouvelles ...
par Jean Claude Ven 12 Jan 2018 - 22:40

» Renommer les instructions ITEM_... ?
par Jicehel Ven 12 Jan 2018 - 18:56

» Ludothèque Panoramic
par jjn4 Ven 12 Jan 2018 - 18:11

» sous-programmes et fonctions
par Jack Ven 12 Jan 2018 - 17:51

» KGF_dll - nouvelles versions
par Minibug Ven 12 Jan 2018 - 0:21

» Mah-Jong français
par Jean Claude Jeu 11 Jan 2018 - 22:15

» HVIEWER
par Klaus Mer 10 Jan 2018 - 2:06

» panoramic 0.9.28
par gigi75 Ven 5 Jan 2018 - 14:06

» Un jeu qui va vous énerver!
par Jean Claude Jeu 4 Jan 2018 - 22:05

» Bonne fêtes de fin d'année ! Meilleurs Vœux 2018 !
par Jicehel Jeu 4 Jan 2018 - 17:28

» Mah-Jong international
par jjn4 Jeu 4 Jan 2018 - 16:55

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Janvier 2018
LunMarMerJeuVenSamDim
1234567
891011121314
15161718192021
22232425262728
293031    
CalendrierCalendrier

Partagez | 
 

 Recherche d'une expression dans un source

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
Marc



Nombre de messages : 582
Age : 56
Localisation : TOURS
Date d'inscription : 18/03/2014

MessageSujet: Recherche d'une expression dans un source   Dim 19 Nov 2017 - 1:53

Bonsoir à tous !

Voici un petit programme de recherche dans un source.

Bien qu’il soit destiné à être greffé à mon programme d’analyse ( http://panoramic.free-boards.net/t5501-analyser-un-code-panoramic ), c’est une version totalement autonome et opérationnelle.

La recherche d’une expression est un peu particulière : Le programme affiche simultanément toutes les lignes où est présente l’expression recherchée et occulte les lignes non concernées. Nous avons donc une vue générale de la recherche.

Après avoir chargé un source, cliquez sur   >> Search >>   puis tapez les caractères que vous souhaitez trouver.

N’hésitez pas à me faire remonter vos remarques.

Bonne programmation et bon dimanche à tous !

Code:
' ------------------------------------------------------------------------------
'  PANORAMIC SEARCH
'  MARC37 - November 2017 - Panoramic v0.9.28.i12
'  http://panoramic-language.pagesperso-orange.fr/French/index.html
'  http://panoramic.top-forum.net
' ------------------------------------------------------------------------------
DIM a$ : ' file name to analyze
DIM b$ : ' Reading a line of a$
DIM c$ : ' uppercase of b$
DIM d$ : ' formatted line number as ######
DIM i%, j% : ' variable loop FOR/NEXT
DIM LineNumber%, FontSize%, MemoInUse%
DIM Word$, UpperWord$
LABEL Resize, OpenFile, Bigger, Smaller, About, Quit
LABEL FindText, DataEntry, StringSearch
FontSize% = 10
DLIST 50 : ' hidden object => source code to analyze
Mask()
ON_CLOSE 0, Quit
ON_RESIZE 0, Resize
ON_CLICK 1, OpenFile
ON_CLICK 2, Quit
ON_CLICK 3, About
ON_CLICK 4, Smaller
ON_CLICK 5, Bigger
ON_CLiCK 6, FindText
END
' ------------------------------------------------------------------------------
FindText:
    OFF_CLICK 6
    FOR i%=20 TO 22
        HIDE i%
    NEXT i%
    SHOW 21
    MemoInUse% = 21
    IF TEXT$(6)="  >> Search >>" THEN TEXT 6,""        
    Word$=TEXT$(6)
    DISPLAY
    GOSUB StringSearch
RETURN
' ------------------------------------------------------------------------------
DataEntry:
    Word$=TEXT$(6)
    GOSUB StringSearch
RETURN
' ------------------------------------------------------------------------------
StringSearch:
    UpperWord$ = UPPER$(Word$)
    CLEAR 21
    SHOW 100
    DISPLAY
    FOR LineNumber% = 1 to COUNT(50)
        IF Word$=""
                b$=ITEM_READ$(20,LineNumber%)
            ITEM_ADD 21,b$
        ELSE    
            b$=UPPER$(ITEM_READ$(50,LineNumber%))
            IF INSTR(b$,UpperWord$)>0
                b$=ITEM_READ$(20,LineNumber%)
                ITEM_ADD 21,b$
            END_IF
        END_IF        
        ON_CHANGE 6, DataEntry
    NEXT LineNumber%
    HIDE 100
RETURN
' ------------------------------------------------------------------------------
OpenFile:
    IF OBJECT_EXISTS(40)=0 THEN OPEN_DIALOG 40
    FILTER 40,"*.bas|*.bas"
    a$=FILE_NAME$(40)
    IF a$="_" THEN RETURN
    CLEAR 50
    FOR i% = 20 TO 21
        CLEAR i%
    NEXT i%    
    FOR i% = 4 TO 6
        HIDE i%
    NEXT i%
    OFF_RESIZE 0
    OFF_CLICK 1
    OFF_CHANGE 6
    ON_CLiCK 6, FindText
    LineNumber% = 1
    FOR i% = 21 to 22
        HIDE i%
    NEXT i%
    SHOW 20
    TEXT 6, "  >> Search >>"  
    waitingMessage()
    FILE_OPEN_READ 40,a$
    CAPTION 0, a$
    WHILE FILE_EOF(40)<>1
        FILE_READLN 40,b$
        d$=STR$(LineNumber%)
        WHILE LEN(d$)<6
            d$=" "+d$
        END_WHILE
        c$=UPPER$(b$)
        ITEM_ADD 50, b$
        ITEM_ADD 20, d$+" "+b$
        LineNumber% = LineNumber% + 1
    END_WHILE
    FILE_CLOSE 40
    HIDE 100
    FOR i% = 4 TO 6
        SHOW i%
    NEXT i%
    ON_RESIZE 0, Resize
    ON_CLICK 1, OpenFile
RETURN
' ------------------------------------------------------------------------------
About:
    FOR i%=20 TO 22
        HIDE i%
    NEXT i%
    SHOW 22
    MemoInUse% = 22
    ON_CLiCK 6, FindText
RETURN
' ------------------------------------------------------------------------------
Resize:
    FOR i% = 20 TO 22
        WIDTH i%, (WIDTH(0)-100)
        HEIGHT i%, (HEIGHT(0)-60)
    NEXT i%
RETURN
' ------------------------------------------------------------------------------
Bigger:
    FontSize%=FontSize% + 1
    IF FontSize% > 16 THEN FontSize% = 16 : RETURN
    FOR i% = 20 TO 22
        FONT_SIZE i%, FontSize%
    NEXT i%
    HIDE MemoInUse% : SHOW MemoInUse%
RETURN
' ------------------------------------------------------------------------------
Smaller:
    FontSize%=FontSize% - 1
    IF FontSize% < 8 THEN FontSize% = 8 : RETURN
    FOR i% = 20 TO 22
        FONT_SIZE i%, FontSize%
    NEXT i%
    HIDE MemoInUse% : SHOW MemoInUse%
RETURN
' ------------------------------------------------------------------------------
SUB Mask()
    WIDTH 0, 1025
        HEIGHT 0, 727
        LEFT 0,(SCREEN_X-WIDTH(0))/2
        TOP 0,(SCREEN_Y-HEIGHT(0))/2
        COLOR 0, 180,180,180
    BUTTON 1
        WIDTH 1, 100
        HEIGHT 1, 25
        LEFT 1,13
        TOP 1,10
        CAPTION 1, "&Open"
    BUTTON 2
        WIDTH 2, 100
        HEIGHT 2, 25
        LEFT 2,13
        TOP 2, 650
        CAPTION 2, "&Quit"
    BUTTON 3
        WIDTH 3, 100
        HEIGHT 3, 25
        LEFT 3,13
        TOP 3, 610
        CAPTION 3, "&About"
    CREATE_HIDE
    BUTTON 4
        WIDTH 4, 100
        HEIGHT 4, 25
        LEFT 4,13
        TOP 4,530    
        CAPTION 4, "&Smaller"  
    BUTTON 5
        WIDTH 5, 100
        HEIGHT 5, 25
        LEFT 5,13
        TOP 5,570    
        CAPTION 5, "&Bigger"  
    EDIT 6
        WIDTH 6, 100
        HEIGHT 6, 25
        LEFT 6,13
        TOP 6,470    
        TEXT 6, "  >> Search >>"  
    for i% = 1 to 6 : font_bold i% : next i%
    FOR i%= 20 TO 22
        LIST i%
        LEFT i%, 125
        TOP i%,10
        WIDTH i%, 870
        HEIGHT i%, 666
        FONT_NAME i%,"Courier New"
        FONT_SIZE i%,10
    NEXT i%
    SHOW 20
    TextAbout()
    MessageBox()
END_SUB
' ------------------------------------------------------------------------------
SUB MessageBox()
    PANEL 100
        WIDTH 100,300
        HEIGHT 100,200
        FONT_NAME 100,"Arial"
        FONT_SIZE 100,14
    COMMAND_TARGET_IS 100
    ALPHA 101
        TOP 101, 60
        LEFT 101, 100
        CAPTION 101, "Please wait"
    ALPHA 102
        TOP 102, 110
        LEFT 102, 60
        CAPTION 102, "Analysis in progress..."
    COMMAND_TARGET_IS 0
    SHOW 101
    SHOW 102
END_SUB
' ------------------------------------------------------------------------------
SUB WaitingMessage()
    TOP 100, (HEIGHT_CLIENT(0)-200)/2
    LEFT 100, (WIDTH_CLIENT(0)-300)/2
    SHOW 100
END_SUB
' ------------------------------------------------------------------------------
SUB TextAbout()
    ITEM_ADD 22,""
    b$="                        PANORAMIC SEARCH"
    ITEM_ADD 22, b$
    b$="           MARC37 - November 2017 - Panoramic v0.9.28.i12"
    ITEM_ADD 22, b$
    b$="  http://panoramic-language.pagesperso-orange.fr/French/index.html"
    ITEM_ADD 22, b$
    b$="                 http://panoramic.top-forum.net"
    ITEM_ADD 22, b$
END_SUB
' ------------------------------------------------------------------------------
Quit:
    TERMINATE
RETURN
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
papydall

avatar

Nombre de messages : 5623
Age : 67
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

MessageSujet: Re: Recherche d'une expression dans un source   Dim 19 Nov 2017 - 3:39

Salut Marc.
J’ai testé et c’est bon.
Merci pour le partage.

Comme je suis de l’ancienne génération de l’époque de feu DOS,  j’aimerais bien signaler la présence de deux commandes que l’on peut lancer à partir de l’invite de commandes et qui offrent une très grande souplesse d’emploi.

FIND et FINDSTR:
 


Voici le résultat de ton code et de la commande FIND (exécutée en ligne de commandes) sur le même fichier : Le résultat est identique.

Remarque : la chaîne recherchée est "xmax" dans le même fichier.

Spoiler:
 
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
Pedro Alvarez

avatar

Nombre de messages : 904
Date d'inscription : 19/01/2014

MessageSujet: Recherche d'une expression dans un source.   Dim 19 Nov 2017 - 10:18

Bonjour.

Pour info, Klaus nous a concocté une fonction similaire, que j'utilise abondamment:


res%=dll_call6("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: 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 les mots
chercher tous les mots séparément: 20=clipboard 21=Memo 22=Combo 23=List en signalant les mots
OutHandle%: ignoré si OutType%=0, ou handle de l'objet sinon
Si OutType%=2, 12 ou 22: les résultats sont ajoutés au contenu existant de la combo.

Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Minibug

avatar

Nombre de messages : 2478
Age : 51
Localisation : Vienne (86)
Date d'inscription : 10/02/2012

MessageSujet: Re: Recherche d'une expression dans un source   Dim 19 Nov 2017 - 13:28

Belle réalisation Marc 37 ! cheers

Comme quoi même en 100% Panoramic, on peut faire des chose très intéressante...
J'ai testé sur plus de 5000 lignes et c'est bluffant même avec un résultat sur de nombreuses lignes.

Bravo continu comme ça... Wink

Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://gpp.panoramic.free.fr
Jean Claude

avatar

Nombre de messages : 5120
Age : 63
Localisation : 83 Var
Date d'inscription : 07/05/2009

MessageSujet: Re: Recherche d'une expression dans un source   Dim 19 Nov 2017 - 16:16

Je viens de tester et ça marche cheers

Bravo Marc37, tu es entrain de nous concocter, sinon un déboguer, au moins un assistant au débogage.

Très utile...

A+
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Marc



Nombre de messages : 582
Age : 56
Localisation : TOURS
Date d'inscription : 18/03/2014

MessageSujet: Re: Recherche d'une expression dans un source   Lun 20 Nov 2017 - 13:08


Merci à tous pour vos retours.

@Papydall :
Merci du rappel !
Eh oui, même sous W10, les commandes DOS survivent !

@Pedro:
Merci aussi pour le rappel de la DDL de Klaus qui a implémenté entre autres, de puissantes et rapides fonctions de recherche.

Merci pour vos tests, je continue pour le plaisir de programmer, même si ça existe déjà... Le plaisir de faire soi-même !

Bonne journée à tous !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Contenu sponsorisé




MessageSujet: Re: Recherche d'une expression dans un source   

Revenir en haut Aller en bas
 
Recherche d'une expression dans un source
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» souci, installer plusieurs map dans le répertoire garmin de la carte mémoire
» Recherche wifi gratuit ou solution gratuite
» pas de carte dans mapsource????
» intégrer mes POI dans MAP SOURCE
» fichier gtm

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: Vos sources, vos utilitaires à partager-
Sauter vers: