FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  MembresMembres  Connexion  
Derniers sujets
» Bataille navale SM
Recherche d'une expression dans un source Emptypar jjn4 Hier à 17:39

» Une calculatrice en une ligne de programme
Recherche d'une expression dans un source Emptypar jean_debord Hier à 8:01

» Gestion d'un système client-serveur.
Recherche d'une expression dans un source Emptypar Pedro Jeu 25 Avr 2024 - 19:31

» Les maths du crocodile
Recherche d'une expression dans un source Emptypar jean_debord Jeu 25 Avr 2024 - 10:37

» Naissance de Crocodile Basic
Recherche d'une expression dans un source Emptypar jean_debord Jeu 25 Avr 2024 - 8:45

» Editeur EliP 6 : Le Tiny éditeur avec 25 onglets de travail
Recherche d'une expression dans un source Emptypar Froggy One Mer 24 Avr 2024 - 18:38

» Dessine-moi une galaxie
Recherche d'une expression dans un source Emptypar jjn4 Lun 22 Avr 2024 - 13:47

» Erreur END_SUB
Recherche d'une expression dans un source Emptypar jjn4 Lun 22 Avr 2024 - 13:43

» Bug sur DIM_LOCAL ?
Recherche d'une expression dans un source Emptypar papydall Dim 21 Avr 2024 - 23:30

» Form
Recherche d'une expression dans un source Emptypar leclode Dim 21 Avr 2024 - 18:09

» trop de fichiers en cours
Recherche d'une expression dans un source Emptypar Marc Dim 21 Avr 2024 - 2:41

» 2D_fill_color(résolu)
Recherche d'une expression dans un source Emptypar leclode Sam 20 Avr 2024 - 8:32

» Consommation gaz électricité
Recherche d'une expression dans un source Emptypar leclode Mer 17 Avr 2024 - 11:07

» on_key_down (résolu)
Recherche d'une expression dans un source Emptypar leclode Mar 16 Avr 2024 - 11:01

» Sous-programme(résolu)
Recherche d'une expression dans un source Emptypar jjn4 Jeu 4 Avr 2024 - 14:42

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Avril 2024
LunMarMerJeuVenSamDim
1234567
891011121314
15161718192021
22232425262728
2930     
CalendrierCalendrier
-39%
Le deal à ne pas rater :
Pack Home Cinéma Magnat Monitor : Ampli DENON AVR-X2800H, Enceinte ...
1190 € 1950 €
Voir le deal

 

 Recherche d'une expression dans un source

Aller en bas 
5 participants
AuteurMessage
Marc

Marc


Nombre de messages : 2379
Age : 63
Localisation : TOURS (37)
Date d'inscription : 17/03/2014

Recherche d'une expression dans un source Empty
MessageSujet: Recherche d'une expression dans un source   Recherche d'une expression dans un source EmptySam 18 Nov 2017 - 23:53

Bonsoir à tous !

Voici un petit programme de recherche dans un source.

Bien qu’il soit destiné à être greffé à mon programme d’analyse ( https://panoramic.1fr1.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
papydall

papydall


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

Recherche d'une expression dans un source Empty
MessageSujet: Re: Recherche d'une expression dans un source   Recherche d'une expression dans un source EmptyDim 19 Nov 2017 - 1: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
http://papydall-panoramic.forumarabia.com/
Pedro

Pedro


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

Recherche d'une expression dans un source Empty
MessageSujet: Recherche d'une expression dans un source.   Recherche d'une expression dans un source EmptyDim 19 Nov 2017 - 8: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
Minibug

Minibug


Nombre de messages : 4566
Age : 57
Localisation : Vienne (86)
Date d'inscription : 09/02/2012

Recherche d'une expression dans un source Empty
MessageSujet: Re: Recherche d'une expression dans un source   Recherche d'une expression dans un source EmptyDim 19 Nov 2017 - 11: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
http://gpp.panoramic.free.fr
Jean Claude

Jean Claude


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

Recherche d'une expression dans un source Empty
MessageSujet: Re: Recherche d'une expression dans un source   Recherche d'une expression dans un source EmptyDim 19 Nov 2017 - 14: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
Marc

Marc


Nombre de messages : 2379
Age : 63
Localisation : TOURS (37)
Date d'inscription : 17/03/2014

Recherche d'une expression dans un source Empty
MessageSujet: Re: Recherche d'une expression dans un source   Recherche d'une expression dans un source EmptyLun 20 Nov 2017 - 11: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
Contenu sponsorisé





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

Revenir en haut Aller en bas
 
Recherche d'une expression dans un source
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Lancer un source Panoramc dans Panoramic_Editor
» Recherche d'une chaîne de caractères dans une arborescence
» Recherche dans le forum
» Ajouter une recherche dans l'aide
» Recherche d'un item dans un fichier.

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: