Post Reply 
Program to search inside programs
09-29-2015, 06:52 PM (This post was last modified: 09-29-2015 07:01 PM by xset.)
Post: #2
Global search and local search
U press SHIFT+[User] and G (Sin key) to call global search on program texts
then enter text (currently case sensitive) and it will print results in form:
Program name:Line Number: Text

SHIFT+[User]+S (9 key) gives local search (search inside current program).

Code:

EXPORT ProgSrch(str)
BEGIN
    LOCAL CurProg:=Programs(1);
    LOCAL L:=DIM(CurProg);
    LOCAL LineNo:=1;
    LOCAL SLine:=1;
    LOCAL i;
    PRINT();
    FOR i FROM 1 TO L DO
        LOCAL cCH:=CurProg(i);
        IF cCH==10 THEN
           LOCAL s:=MID(CurProg,SLine,i-SLine+1);
           IF INSTRING(s,str) THEN
              PRINT(LineNo+": "+s);
           END;
           SLine:=i+1;
           LineNo:=LineNo+1;
        END;   
    END;
END;

CONCATSTRS(lst)
BEGIN
    LOCAL res:="";
    FOR I FROM 1 TO SIZE(lst) DO
       res:=res+lst(I);
    END;
    RETURN res;
END;

EXPORT ProgGlobSrch(str)
BEGIN
    LOCAL Name:=head(Programs);
    LOCAL PrgList:=Programs;
    LOCAL CurProg:=CONCATSTRS(MAKELIST(CHAR(10)+PrgList(X)+CHAR(13)+Programs(X),X,1,S​IZE(Programs)));
    LOCAL L:=DIM(CurProg);
    LOCAL LineNo:=1;
    LOCAL SLine:=1;
    LOCAL i;
    PRINT();
    FOR i FROM 1 TO L DO
        LOCAL cCH:=CurProg(i);
        IF cCH==13 THEN 
           Name:=MID(CurProg,SLine,i-SLine+1); // Program name
           SLine:=i+1;
           LineNo:=1;
        END;
        IF cCH==10 THEN
           LOCAL s:=MID(CurProg,SLine,i-SLine+1);
           IF INSTRING(s,str) THEN
              PRINT(Name+":"+LineNo+": "+s);
           END;
           SLine:=i+1;
           LineNo:=LineNo+1;
        END;   
    END;
END;

KEY K_Sin()
BEGIN
    LOCAL str:="";
    INPUT(str,"Search in program","string=","Enter string:","");
    IF str<>"" THEN       
        ProgGlobSrch(str);
    END;
    RETURN "";
END;


KEY K_9()
BEGIN
    LOCAL str:="";
    INPUT(str,"Search in program","string=","Enter string:","");
    IF str<>"" THEN       
        ProgSrch(str);
    END;
    RETURN "";
END;

Next task is case insensitive search and "Search and replace" in current program.


Attached File(s)
.hpprgm  ProgSrch.hpprgm (Size: 3.4 KB / Downloads: 6)
Find all posts by this user
Quote this message in a reply
Post Reply 


Messages In This Thread
Program to search inside programs - xset - 09-29-2015, 05:44 PM
Global search and local search - xset - 09-29-2015 06:52 PM
Version 0.3 - xset - 09-30-2015, 05:09 PM



User(s) browsing this thread: 1 Guest(s)