Forum Liberty Basic France

Général » Fonction "Jump To ..." pour JB Fonction très pratique de l'éditeur LB, abscente dans JB.
Le 29/09/2012 à 13h19

Libertynaute Expert

Groupe: Membre

Inscrit le: 19/02/2011
Messages: 767
Je n'ai malheureusement pas retrouvé l'auteur dans le forum anglophone pour lui donner crédit :(

Je l'utilise souvent pour regarder rapidement des fichiers *.bas .

Code VB :
nomainwin
on error goto [huh]
dim label$(80)  'increase if needed

[start]
filedialog "Open Source File", "C:\JUST BASIC\*.bas", fileName$
if fileName$="" then
    confirm "No file chosen!"+chr$(13)+"Re-open file dialog?";yn$
        if yn$="yes" then
            goto [start]
        else
            goto [quit.test]
        end if
end if
 
WindowWidth=650
WindowHeight=600
texteditor #1.te, 178, 10, 450, 500
menu #1, "File", "Open", [nouv]
listbox #1.lb, label$(), [match], 10, 10, 150, 400
statictext #1.st, "", 10, 420, 150, 20
statictext #1.st0, ">", 168, 65, 10, 20
statictext #1.st2, "", 10, 440, 150, 20
statictext #1.st3, "", 10, 460, 150, 20
statictext #1.st4, "", 10, 480, 150, 20
statictext #1.st5, "", 10, 500, 150, 20
 
BackgroundColor$="lightgray"
 
open "Label Extractor  -  ";fileName$ for window as #1
#1 "trapclose [quit]"
startTime=time$("ms")
 
open fileName$ for input as #me
label$(1) = "- TOP -"
n=2
while eof(#me)=0
line input #me, ln$
    if len(ln$) = 0 then
       blank = blank + 1
    else
       text = text + 1
    end if
    if left$(trim$(ln$), 1)="[" then gosub [getlabel]:n=n+1
    if lower$(word$(trim$(ln$), 1))="sub" then gosub [getsub]:n=n+1
    if lower$(word$(trim$(ln$), 1))="function" then gosub [getfunction]:n=n+1
    #1.te ln$
wend
label$(n) = "- BOTTOM -"
close #me
#1.lb, "reload"
endTime=time$("ms")
#1.st "Extract time = ";endTime-startTime; " ms"
#1.st2 "No. of labels: ";n-2
#1.st3 "No. of lines: ";text + blank
#1.st4 "   Text lines: ";text
#1.st5 "   Blank lines: ";blank
wait
 
[getlabel]
l$=word$(ln$, 1)
label$(n)=l$
return
 
[getsub]
l$=ln$
label$(n)=l$
return
 
[getfunction]
l$=ln$
label$(n)=l$
return
 
[match]
#1.lb "selection? label$"
open fileName$ for input as #me
i=0
while eof(#me)=0
i=i+1
line input #me, ln$
 select case label$
    case word$(ln$, 1),ln$
        #1.te "!origin 1 ";i - 4
        exit while
    case "- TOP -"
        #1.te "!origin 1 ";1
        exit while
    case "- BOTTOM -"
        #1.te "!origin 1 ";text + blank - 34
        exit while
 end select
wend
close #me
wait
 
[nouv]
close #1
blank = 0
text = 0
redim label$(80)
goto [start]
wait
 
[quit]
close #1
end
 
[quit.test]
end
 
[huh]
if Err = 9 then
    notice "Increase dim for label$()"
    close #me
    goto [quit]
end if
 
____________________
Devise Shadocks : "Mieux vaut mobiliser son intelligence pour des conneries, que mobiliser sa connerie pour des choses intelligentes"
Coluche disait : "C'est parce que la vitesse de la lumière est plus rapide que celle du son que certains peuvent paraîtrent brillants jusqu'à ce qu'ils ouvrent la bouche."

Web    
Le 29/09/2012 à 15h15

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2471
Redoutablement efficace.. :top
J'espère ne jamais avoir assez de souk dans mes dossiers pour devoir m'en servir... :s :lol
Je crois que les anglophones; ils se la jouent un peu avec leur " give crédits".. Puisqu'ils ont tous ou presque, des pseudos. Enfin.. si ça leur fait plaisir; pourquoi pas ? :)



Edité par Roland Le 29/09/2012 à 15h20
____________________
Roro

   
Le 29/09/2012 à 15h58

Libertynaute Expert

Groupe: Membre

Inscrit le: 19/02/2011
Messages: 767
ce n'est pas un code pour gérer les dossiers Roland !!!
C'est juste pour lister les [labels], SUB et FUNCTIONS du fichier *.bas sélectionné et accéder à cette routine en cliquant dessus.

@+
____________________
Devise Shadocks : "Mieux vaut mobiliser son intelligence pour des conneries, que mobiliser sa connerie pour des choses intelligentes"
Coluche disait : "C'est parce que la vitesse de la lumière est plus rapide que celle du son que certains peuvent paraîtrent brillants jusqu'à ce qu'ils ouvrent la bouche."

Web    
Le 29/09/2012 à 17h45

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2471
a bon ! moi, ça m'a présenté tous les fichiers .bas de tous les dossiers...un vrai festival !
Je regarde ça de plus prés.
....je reviens...J'ai voulu essayer cette fonction miraculeuse:
J'ai sélectionné un dossier contenant un .bas et un /img dans la fentr: "pick a folder, le nom n'apparait pas dans la fentr principale, il s'arrete à trois S/niveaux ( "mes doc")
Et comme il manque un stop ou un annuler pendant le scan, je me suis retapé le festival
Je suis allé jusqu'à ce dossier(bd_jb)..ok -->scan et il me sort: did no find any files. :\'(
Comprend pas pourquoi quand je clique sur les pointillés de la fentr principale, en haut à droite, il n'ouvre pas l'explorateur "Windows", au lieu d'ouvrir cette fenetre."pick a folder"



Edité par Roland Le 29/09/2012 à 18h27
____________________
Roro

   
Le 29/09/2012 à 18h34

Libertynaute Expert

Groupe: Membre

Inscrit le: 19/02/2011
Messages: 767
Tu confonds : ce n'est pas ce code qui fait tout ça... ça va pas mieux toi hein :siffle

Ce doit être plutôt celui-ci : http://libertybasic.fr/forum/topic-208-0-2374+le-nettoyeur.php#m2374 que j'ai posté dans le post d'Alex.

@+
____________________
Devise Shadocks : "Mieux vaut mobiliser son intelligence pour des conneries, que mobiliser sa connerie pour des choses intelligentes"
Coluche disait : "C'est parce que la vitesse de la lumière est plus rapide que celle du son que certains peuvent paraîtrent brillants jusqu'à ce qu'ils ouvrent la bouche."

Web    
Le 29/09/2012 à 18h51

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2471
Oups! en effet.! c'est le JFBLB de chez l'oncle Sam, que j'ai testé.....Y'a eu confusage....
....je reviens...Alors là c'est carrément Génial ! :top :top :top
hé..t'aurais pu me le refiler avant ce bout !... la roulette de ma souris est à genoux, et j'ai l'index tout bleu....
......En adaptant à la hauteur de l'écran et en repositionnant, c'est le pied intégral.



Edité par Roland Le 30/09/2012 à 01h07
____________________
Roro

   
Le 30/09/2012 à 08h28

Libertynaute Expert

Groupe: Membre

Inscrit le: 19/02/2011
Messages: 767
oui, et on pourrait aussi lancer le fichier dans l'éditeur JB et aussi le fichier TKN après avoir désactivé le bouton s'il n'existe pas !

comme ça :

Code VB :
nomainwin
on error goto [huh]
dim info$(1,1)
dim label$(80)  'increase if needed

[start]
filedialog "Open Source File", "C:\JUST BASIC\*.bas", fileName$
if fileName$="" then
    confirm "No file chosen!"+chr$(13)+"Re-open file dialog?";yn$
    if yn$="yes" then
        goto [start]
    else
        goto [quit.test]
    end if
end if
 
WindowWidth=750
WindowHeight=800
UpperLeftX=(DisplayWidth-WindowWidth)/3
UpperLeftY=(DisplayHeight-WindowHeight)/4
texteditor #1.te, 188, 10, WindowWidth-200, WindowHeight-60
menu #1, "File", "Open", [nouv]
listbox #1.lb, label$(), [match], 10, 10, 165, 450
statictext #1.st, "", 10, 470, 150, 20
statictext #1.st0, ">", 178, 65, 10, 20
statictext #1.st2, "", 10, 490, 150, 20
statictext #1.st3, "", 10, 510, 150, 20
statictext #1.st4, "", 10, 530, 150, 20
statictext #1.st5, "", 10, 550, 150, 20
BUTTON #1.edi, "JB's editor", [JBeditor], UL, 20, 600 , 80, 25
BUTTON #1.run, "Run tkn", [execute], UL, 20, 640 , 80, 25
 
BackgroundColor$="lightgray"
 
open "Label Extractor  -  ";fileName$ for window_nf as #1
#1 "trapclose [quit]"
path$ = GetPath$(fileName$)
name$ = GetName$(fileName$)
tknfile$ = left$(name$,len(name$)-3)+"tkn"
if fileExists(path$, tknfile$) = 0 then #1.run "!disable"
 
startTime=time$("ms")
 
open fileName$ for input as #me
label$(1) = "- TOP -"
n=2
while eof(#me)=0
line input #me, ln$
    if len(ln$) = 0 then
       blank = blank + 1
    else
       text = text + 1
    end if
    if left$(trim$(ln$), 1)="[" then gosub [getlabel]:n=n+1
    if lower$(word$(trim$(ln$), 1))="sub" then gosub [getsub]:n=n+1
    if lower$(word$(trim$(ln$), 1))="function" then gosub [getfunction]:n=n+1
    #1.te ln$
wend
label$(n) = "- BOTTOM -"
close #me
#1.lb, "reload"
endTime=time$("ms")
#1.st "Extract time = ";endTime-startTime; " ms"
#1.st2 "No. of labels: ";n-2
#1.st3 "No. of lines: ";text + blank
#1.st4 "   Text lines: ";text
#1.st5 "   Blank lines: ";blank
wait
 
[JBeditor]
    run "C:\Program Files\Just BASIC v1.01\jbasic.exe ";fileName$
wait
 
[execute]
    run "C:\Program Files\Just BASIC v1.01\jbrun101.exe ";left$(fileName$,len(fileName$)-3);"tkn"
wait
 
[getlabel]
l$=word$(ln$, 1)
label$(n)=l$
return
 
[getsub]
l$=ln$
label$(n)=l$
return
 
[getfunction]
l$=ln$
label$(n)=l$
return
 
[match]
#1.lb "selection? label$"
open fileName$ for input as #me
i=0
while eof(#me)=0
i=i+1
line input #me, ln$
 select case label$
    case word$(ln$, 1),ln$
        #1.te "!origin 1 ";i - 4
        exit while
    case "- TOP -"
        #1.te "!origin 1 ";1
        exit while
    case "- BOTTOM -"
        #1.te "!origin 1 ";text + blank - 34
        exit while
 end select
wend
close #me
wait
 
[nouv]
close #1
blank = 0
text = 0
redim label$(80)
goto [start]
wait
 
FUNCTION fileExists(path$, filename$)
    'DIM info$(1,1)   must be declared at the start of the prog.
    files path$, filename$, info$(  ' path$ = 'DefaultDir$' generally.
    fileExists = val(info$(0, 0))  'not zero if true
END FUNCTION
 
function GetPath$(input$)
    bsPos = len(input$)
    while mid$(input$, bsPos, 1) <> "\" and bsPos > 0
        bsPos = bsPos - 1
    wend
    if bsPos <> 0 then
        GetPath$ = left$(input$,bsPos)
    else
        GetPath$ = ""
    end if
end function
 
function GetName$(input$)
    bsPos = len(input$)
    while mid$(input$, bsPos, 1) <> "\" and bsPos > 0
        bsPos = bsPos - 1
    wend
    if bsPos <> 0 then
        GetName$ = right$(input$,len(input$)-bsPos)
    else
        GetName$ = ""
    end if
end function
 
[quit]
close #1
end
 
[quit.test]
end
 
[huh]
if Err = 9 then
    notice "Increase dim for label$()"
    close #me
    goto [quit]
end if
 




PS: JFBLB aussi est très instructif :top



Edité par cassiope01 Le 30/09/2012 à 09h55
____________________
Devise Shadocks : "Mieux vaut mobiliser son intelligence pour des conneries, que mobiliser sa connerie pour des choses intelligentes"
Coluche disait : "C'est parce que la vitesse de la lumière est plus rapide que celle du son que certains peuvent paraîtrent brillants jusqu'à ce qu'ils ouvrent la bouche."

Web    
Le 30/09/2012 à 11h51

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2471
hé hé ! Je vois que tu est préssé de le bricoler ce prog ( comme moi ). Y'a du potentiel ! ;)
Mais en cliquant sur JB's éditor, j'ai eu une error #1
Ce qui serait bien, ce serait de pouvoir lancer l'extracteur depuis un éditeur contenant un code, et que l'extracteur charge de lui-meme le code en question, ça ne parait pas trop faisable à première vue, mais peut-etre à seconde vue ?
On peut aussi réver à une extraction des "if", ou des array, en se servant des parentheses....Ha ...quel bel os ! :miam
.....Résolu... c'est que mon JB exe n'est pas dans "program files", mais dans un : "C/Conteneur J"
Aux grands maux, les grands remèdes: J'ai fait un exe, dont j'ai mis un raccourcis sur le bureau; à coté de celui de l'aide traduite....moi content !



Edité par Roland Le 30/09/2012 à 12h06
____________________
Roro

   
Le 01/10/2012 à 17h56

Libertynaute Expert

Groupe: Membre

Inscrit le: 19/02/2011
Messages: 767
Roland:
Ce qui serait bien, ce serait de pouvoir lancer l'extracteur depuis un éditeur contenant un code, et que l'extracteur charge de lui-meme le code en question, ça ne parait pas trop faisable à première vue, mais peut-etre à seconde vue ?


Il est évident qu'on ne peut pas ajouter un bouton à l'éditeur JB !
Si tu l'as, autant utiliser directement l'éditeur LB qui dispose de cette fonction bien pratique.

Ce que tu pourrais faire par contre serait de créer un fichier "tmp.bas" (dans le répertoire du code) dès que tu annules la "filedialog", puis dans l'éditeur JB tu fais un "Ctrl A" pour tout selectionner ton code, puis "Ctrl V" dans le "texteditor" de "l'extracteur" comme tu dis, puis un bouton pour lancer l'exploration...
Destruction automatique du fichier "tmp.bas" en quittant.

Plus facile à faire qu'à t'expliquer ;)

@+


PS: petites modifs cosmétiques... un chouia mieux pour nos vieux yeux ;)

Code VB :
nomainwin
on error goto [huh]
dim info$(1,1)
dim label$(80)  'increase if needed

[start]
filedialog "Open Source File", "C:\JUST BASIC\*.bas", fileName$
if fileName$="" then
    confirm "No file chosen!"+chr$(13)+"Re-open file dialog?";yn$
    if yn$="yes" then
        goto [start]
    else
        goto [quit.test]
    end if
end if
 
WindowWidth=950
WindowHeight=800
UpperLeftX=(DisplayWidth-WindowWidth)/3
UpperLeftY=(DisplayHeight-WindowHeight)/4
texteditor #1.te, 188, 10, WindowWidth-200, WindowHeight-60
menu #1, "File", "Open", [nouv]
listbox #1.lb, label$(), [match], 10, 10, 165, 450
statictext #1.st, "", 10, 470, 150, 20
statictext #1.st0, ">", 178, 65, 10, 20
statictext #1.st2, "", 10, 490, 150, 20
statictext #1.st3, "", 10, 510, 150, 20
statictext #1.st4, "", 10, 530, 150, 20
statictext #1.st5, "", 10, 550, 150, 20
BUTTON #1.edi, "JB's editor", [JBeditor], UL, 20, 600 , 80, 25
BUTTON #1.run, "Run tkn", [execute], UL, 20, 640 , 80, 25
BackgroundColor$="lightgray"
 
open "Label Extractor  -  ";fileName$ for window_nf as #1
#1 "trapclose [quit]"
#1.te "!font Courier_New 10"
#1.lb "font Courier_New 10"
path$ = GetPath$(fileName$)
name$ = GetName$(fileName$)
tknfile$ = left$(name$,len(name$)-3)+"tkn"
if fileExists(path$, tknfile$) = 0 then #1.run "!disable"
 
startTime=time$("ms")
 
open fileName$ for input as #me
label$(1) = "- TOP -"
n=2
while eof(#me)=0
    line input #me, ln$
    if len(ln$) = 0 then
       blank = blank + 1
    else
       text = text + 1
    end if
    if left$(trim$(ln$), 1)="[" then gosub [getlabel]:n=n+1
    if lower$(word$(trim$(ln$), 1))="sub" then gosub [getsub]:n=n+1
    if lower$(word$(trim$(ln$), 1))="function" then gosub [getfunction]:n=n+1
    #1.te ln$
wend
label$(n) = "- BOTTOM -"
close #me
#1.lb, "reload"
endTime=time$("ms")
#1.st "Extract time = ";endTime-startTime; " ms"
#1.st2 "No. of labels: ";n-2
#1.st3 "No. of lines: ";text + blank
#1.st4 "   Text lines: ";text
#1.st5 "   Blank lines: ";blank
wait
 
[JBeditor]
    run "C:\Program Files\Just BASIC v1.01\jbasic.exe ";fileName$
wait
 
[execute]
    run "C:\Program Files\Just BASIC v1.01\jbrun101.exe ";left$(fileName$,len(fileName$)-3);"tkn"
wait
 
[getlabel]
    l$=word$(ln$, 1)
    label$(n)=l$
return
 
[getsub]
    l$=ln$
    label$(n)=l$
return
 
[getfunction]
    l$=ln$
    label$(n)=l$
return
 
[match]
#1.lb "selection? label$"
open fileName$ for input as #me
i=0
while eof(#me)=0
    i=i+1
    line input #me, ln$
    select case label$
    case word$(ln$, 1),ln$
        #1.te "!origin 1 ";i - 4
        exit while
    case "- TOP -"
        #1.te "!origin 1 ";1
        exit while
    case "- BOTTOM -"
        #1.te "!origin 1 ";text + blank - 34
        exit while
    end select
wend
close #me
wait
 
[nouv]
    close #1
    blank = 0
    text = 0
    redim label$(80)
    goto [start]
wait
 
FUNCTION fileExists(path$, filename$)
    'DIM info$(1,1)   must be declared at the start of the prog.
    files path$, filename$, info$(  ' path$ = 'DefaultDir$' generally.
    fileExists = val(info$(0, 0))  'not zero if true
END FUNCTION
 
function GetPath$(input$)
    bsPos = len(input$)
    while mid$(input$, bsPos, 1) <> "\" and bsPos > 0
        bsPos = bsPos - 1
    wend
    if bsPos <> 0 then
        GetPath$ = left$(input$,bsPos)
    else
        GetPath$ = ""
    end if
end function
 
function GetName$(input$)
    bsPos = len(input$)
    while mid$(input$, bsPos, 1) <> "\" and bsPos > 0
        bsPos = bsPos - 1
    wend
    if bsPos <> 0 then
        GetName$ = right$(input$,len(input$)-bsPos)
    else
        GetName$ = ""
    end if
end function
 
[quit]
    close #1
end
 
[quit.test]
end
 
[huh]
if Err = 9 then
    notice "Increase dim for label$()"
    close #me
    goto [quit]
end if




Edité par cassiope01 Le 01/10/2012 à 18h08
____________________
Devise Shadocks : "Mieux vaut mobiliser son intelligence pour des conneries, que mobiliser sa connerie pour des choses intelligentes"
Coluche disait : "C'est parce que la vitesse de la lumière est plus rapide que celle du son que certains peuvent paraîtrent brillants jusqu'à ce qu'ils ouvrent la bouche."

Web    
Le 01/10/2012 à 19h36

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2471
Petite modif..gros effet.. :top J'ajoute de suite un bouton ( :miam ), pour avoir à volonté: la police "vieux yeux", et la vue "grand champs".
Quez aquo ces deux fonctions get path$ et get name$ ? :heink
Si tu a deux lignes qui trainent à leur sujet, envoie les de ce coté ci.
Bon, j'ai copié ton explic, je vais tenter la manip..mais comme c'est, ça peut aller. Il suffit d'ouvrir ce code au lieu de l'éditeur, puis l'éditeur par le bouton jb editor....C'est parfaitement nickel (encore mieux que la fonction équivalente de LB)
PS: y'a -t-il moyen de positionner la fenetre du filedialog ? En lançant par le code, elle viens au milieu à gauche, mais avec l'exe elle se retrouve tout en bas. :s ...merci.....0+



Edité par Roland Le 01/10/2012 à 20h25
____________________
Roro

   
Le 04/10/2012 à 13h50

Libertynaute Expert

Groupe: Membre

Inscrit le: 19/02/2011
Messages: 767
Roland:
Quez aquo ces deux fonctions get path$ et get name$ ? :heink
Si tu a deux lignes qui trainent à leur sujet, envoie les de ce coté ci.

C'est très simple : l'une extrait tout ce qu'il y a avant le dernier "\" dans la chaine de caractères du nom complet du fichier pour donner le chemin, l'autre extrait tout ce qu'il y a après le dernier "\" dans la chaine de caractères du nom complet du fichier pour donner juste le nom du fichier.
Je ne crois pas que ces infos apparaissent tel quel dans le tableau info$(10,10) rempli par la commande file...

Roland:
PS: y'a -t-il moyen de positionner la fenetre du filedialog ? En lançant par le code, elle viens au milieu à gauche, mais avec l'exe elle se retrouve tout en bas. :s ...merci.....0+

Oui, c'est vrai. Moi ça ne me gène pas, mais il faudrait poser le question aux englishes, où bien chercher ça dans l'aide de JB, car effectivement, du fait que c'est la première chose que le code fait, rien ne lui est indiqué à ce sujet, et même que je ne vois pas comment le faire !!!

@+



Edité par cassiope01 Le 04/10/2012 à 13h53
____________________
Devise Shadocks : "Mieux vaut mobiliser son intelligence pour des conneries, que mobiliser sa connerie pour des choses intelligentes"
Coluche disait : "C'est parce que la vitesse de la lumière est plus rapide que celle du son que certains peuvent paraîtrent brillants jusqu'à ce qu'ils ouvrent la bouche."

Web    
Le 04/10/2012 à 16h02

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2471
Merci pour l'explication des fonctions, ça va me permettre de bien saisir le principe.
Pour la filedialog' position, il n'y a rien dans les aides...je crois bien que c'est mort, faut faire avec...
comme la taille de la fenetre éditeur à l'ouverture...Grrr :(
____________________
Roro

   
Le 04/10/2012 à 18h54

Libertynaute Expert

Groupe: Membre

Inscrit le: 19/02/2011
Messages: 767
Je viens de trouver encore une petite obtimisation de ces 2 petites fonctions parmis tous les fichiers *.bas (très instructifs) qui se trouvent d'origine dans le répertoire c:\Program Files\Just BASIC v1.01 d'installation de JB :

Code VB :
' http://libertybasic.fr/forum/topic-209.php#m2399
nomainwin
on error goto [huh]
dim info$(1,1)
dim label$(80)  'increase if needed

[start]
filedialog "Open Source File", "C:\JUST BASIC\*.bas", fileName$
if fileName$="" then
    confirm "No file chosen!"+chr$(13)+"Re-open file dialog?";yn$
    if yn$="yes" then [start] else [quit.test]
end if
 
WindowWidth=950
WindowHeight=800
UpperLeftX=(DisplayWidth-WindowWidth)/3
UpperLeftY=(DisplayHeight-WindowHeight)/4
texteditor #1.te, 188, 10, WindowWidth-200, WindowHeight-60
menu #1, "File", "Open", [nouv]
listbox #1.lb, label$(), [match], 10, 10, 165, 450
statictext #1.st0, ">", 178, 75, 10, 20
statictext #1.st1, "", 10, 470, 150, 20
statictext #1.st2, "", 10, 490, 150, 20
statictext #1.st3, "", 10, 510, 150, 20
statictext #1.st4, "", 10, 530, 150, 20
statictext #1.st5, "", 10, 550, 150, 20
BUTTON #1.edi, "JB's editor", [JBeditor], UL, 20, 600 , 80, 25
BUTTON #1.run, "Run tkn", [execute], UL, 20, 640 , 80, 25
BackgroundColor$="lightgray"
 
open "Label Extractor  -  ";fileName$ for window_nf as #1
#1 "trapclose [quit]"
#1.te "!font Courier_New 10"
#1.lb "font Courier_New 10"
#1.st0 "!font Arial 12 bold"
path$ = GetPath$(fileName$)
name$ = GetName$(fileName$)
tknfile$ = left$(name$,len(name$)-3)+"tkn"
if fileExists(path$, tknfile$) = 0 then #1.run "!disable"
 
startTime=time$("ms")
 
open fileName$ for input as #me
label$(1) = "- TOP -"
n=2
while eof(#me)=0
    line input #me, ln$
    if len(ln$) = 0 then
       blank = blank + 1
    else
       text = text + 1
    end if
    if left$(trim$(ln$), 1)="[" then gosub [getlabel]:n=n+1
    if lower$(word$(trim$(ln$), 1))="sub" then gosub [getsub]:n=n+1
    if lower$(word$(trim$(ln$), 1))="function" then gosub [getfunction]:n=n+1
wend
#1.te "!contents #me"   ' met le contenu du fichier filename$ dans le texteditor.
label$(n) = "- BOTTOM -"
close #me
#1.te "!origin 1 ";1
#1.lb, "reload"
endTime=time$("ms")
#1.st1 "Extract time = ";endTime-startTime; " ms"
#1.st2 "No. of labels: ";n-2
#1.st3 "No. of lines: ";text + blank
#1.st4 "   Text lines: ";text
#1.st5 "   Blank lines: ";blank
wait
 
[JBeditor]
    run "C:\Program Files\Just BASIC v1.01\jbasic.exe ";fileName$
wait
 
[execute]
    run "C:\Program Files\Just BASIC v1.01\jbrun101.exe ";left$(fileName$,len(fileName$)-3);"tkn"
wait
 
[getlabel]
    l$=word$(ln$, 1)
    label$(n)=l$
return
 
[getsub]
    l$=ln$
    label$(n)=l$
return
 
[getfunction]
    l$=ln$
    label$(n)=l$
return
 
[match]
#1.lb "selection? label$"
open fileName$ for input as #me
i=0
while eof(#me)=0
    i=i+1
    line input #me, ln$
    select case label$
    case word$(ln$, 1),ln$
        #1.te "!origin 1 ";i - 4
        exit while
    case "- TOP -"
        #1.te "!origin 1 ";1
        exit while
    case "- BOTTOM -"
        #1.te "!origin 1 ";text + blank - 38
        exit while
    end select
wend
close #me
#1.te "!setfocus"
wait
 
[nouv]
    close #1
    blank = 0
    text = 0
    redim label$(80)
    goto [start]
wait
 
FUNCTION fileExists(path$, filename$)
    'DIM info$(1,1)   must be declared at the start of the prog.
    files path$, filename$, info$(  ' path$ = 'DefaultDir$' generally.
    fileExists = val(info$(0, 0))  'not zero if true
END FUNCTION
 
'return just the directory path from a full file path
function GetPath$(fullPath$)
    GetPath$ = fullPath$
    while right$(GetPath$, 1) <> "\" and GetPath$ <> ""
        GetPath$ = left$(GetPath$, len(GetPath$)-1)
    wend
end function
 
'return just the filename from a full file path
function GetName$(fullPath$)
    pathLength = len(GetPath$(fullPath$))
    GetName$ = right$(fullPath$, len(fullPath$)-pathLength)
end function
 
[quit]
    close #1
end
 
[quit.test]
end
 
[huh]
if Err = 9 then
    notice "Increase dim for label$()"
    close #me
    goto [quit]
end if
 




Edité par cassiope01 Le 14/10/2012 à 10h29
____________________
Devise Shadocks : "Mieux vaut mobiliser son intelligence pour des conneries, que mobiliser sa connerie pour des choses intelligentes"
Coluche disait : "C'est parce que la vitesse de la lumière est plus rapide que celle du son que certains peuvent paraîtrent brillants jusqu'à ce qu'ils ouvrent la bouche."

Web    
Le 04/10/2012 à 19h58

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2471
Une while ... :| .Mais c'est bien sur ! :|
Bon.... si on me cherche.... je suis au tuto, chapitre: fonctions.......à+



Edité par Roland Le 04/10/2012 à 21h29
____________________
Roro

   
Le 11/10/2012 à 12h31

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2471
Bonjour, voilà, c'est au sujet de l'extractor.
Il n'y a pas beaucoup de place pour ajouter un bouton, mais ce qui serait bien, ce serait que le double clic sur le nom d'un bloc dans le volet de gauche, ferme ce volet, et agrandisse d'autant en largeur, le volet de droite qui contient le code. ( le bouton servant à la manip inverse)
Cela te parait-il possible ? :p
____________________
Roro

   
Le 14/10/2012 à 02h22

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2471
Ca se complique... j'ai mis les options: "zoom" et "change" dans le menu.
"zoom" passe alternativement de font 8 à: font 10
"change" passe alternativement de: listbox+texteditor à: texeditor élargi.
Mais pour stocker quelque part, la chaine qui contient l'endroit où le texeditor doit pointer,( qui est la chaine sur laquelle on double clique dans la listbox) il faudrait que je la trouve. :gre

Si tu avais deux lignes sur la question, tu aurais un merci de plus pour ta collection. :p :miam

Code JB :
 
 
nomainwin
on error goto [huh]
dim info$(1,1)
dim label$(120)  'increase if needed
 
  change=0
 
[start]
filedialog "Open Source File", "C:\JUST BASIC\*.bas", fileName$
if fileName$="" then
    confirm "No file chosen!"+chr$(13)+"Re-open file dialog?";yn$
    if yn$="yes" then
        goto [start]
    else
        goto [quit.test]
    end if
end if
 
  WindowWidth=550
  WindowHeight=750
    UpperLeftX=INT((DisplayWidth-WindowWidth)/1)
    UpperLeftY=INT((DisplayHeight-WindowHeight)/6)
  [reouvre]
        largtext=350: larglist=150
        xtext=178
 
  statictext #1.st, "", 10, 590, 100, 20
  statictext #1.st0, ">", 168, 65, 10, 20
  statictext #1.st2, "", 10, 610, 70, 20
  statictext #1.st3, "", 10, 630, 70, 20
  statictext #1.st4, "", 10, 650, 90, 20
  statictext #1.st5, "", 10, 670, 80, 20
BUTTON #1.edi, "JB's editor", [JBeditor], UL, 95, 610 , 70, 20
BUTTON #1.run, "Run tkn", [execute], UL, 95, 670 , 70, 20
 
 [ouvre]
   if change=1 then
      oui=1  'change =10
      largtext=540: larglist=10
      xtext=10
   end if
 
    texteditor #1.te, xtext, 10, largtext, 680
    MENU #1, "File", "Open", [nouv], "zoom", [zoo], "change", [change]
    listbox #1.lb, label$(), [match], 10, 10, larglist, 570
 
BackgroundColor$="lightgray"
 
    if oui=1 and change =0 then
       chat=0
       close #1
       open "Label Extractor  -  ";fileName$ for window_nf as #1 'reorigine
       goto [reviens]
    end if
 
    if change=1 then
       chat=1
       close #1
       open "Label Extractor  -  ";fileName$ for window_nf as #1 ' changement
       goto [saute]
    end if
 
open "Label Extractor  -  ";fileName$ for window_nf as #1 'origine
  [saute]
  [reviens]
 
 
#1 "trapclose [quit]"
#1.te "!font Courier_New 10"
#1.lb "font Courier_New 10"
zoo=2
path$ = GetPath$(fileName$)
name$ = GetName$(fileName$)
tknfile$ = left$(name$,len(name$)-3)+"tkn"
    if chat=1 then goto [saut2]
if fileExists(path$, tknfile$) = 0 then #1.run "!disable"
    [saut2]
startTime=time$("ms")
  [cont]
open fileName$ for input as #me
label$(1) = "- TOP -"
n=2
while eof(#me)=0
line input #me, ln$
    if len(ln$) = 0 then
       blank = blank + 1
    else
       text = text + 1
    end if
    if left$(trim$(ln$), 1)="[" then gosub [getlabel]:n=n+1
    if lower$(word$(trim$(ln$), 1))="sub" then gosub [getsub]:n=n+1
    if lower$(word$(trim$(ln$), 1))="function" then gosub [getfunction]:n=n+1
    #1.te ln$
wend
label$(n) = "- BOTTOM -"
close #me
#1.lb, "reload"
endTime=time$("ms")
   if chat=1 then goto [saut1]
#1.st "Time = ";endTime-startTime; " ms"
  #1.st2 "Labels: ";n-2
  #1.st3 "Lines: ";text + blank
  #1.st4 "Text lines: ";text
  #1.st5 "Blank lines: ";blank
  [saut1]
wait
 
  [change]
  change=change+1
  if change=2 then change=0
   if change=1 then goto [ouvre]
   if change=0 then goto [reouvre]
  wait
 
[JBeditor]
    run "C:\Conteneur J\Just BASIC v1.01\jbasic.exe ";fileName$
wait
 
[execute]
    run "C:\Conteneur J\Just BASIC v1.01\jbrun101.exe ";left$(fileName$,len(fileName$)-3);"tkn"
wait
  [zoo]
  zoo=zoo+1
  if zoo =3 then zoo=1
  if zoo =1 then
    #1.te "!font Courier_New 10"  '§§§§§§
    #1.lb "font Courier_New 10"  '§§§§§§§
  end if
  if zoo =2 then
    #1.te "!font Courier_New 8"  '§§§§§§
    #1.lb "font Courier_New 8"  '§§§§§§§
  end if
   '#1.zoo, word$("8 10",zoo)
    goto [cont]
  wait
 
[getlabel]
l$=word$(ln$, 1)
label$(n)=l$
return
 
[getsub]
l$=ln$
label$(n)=l$
return
 
[getfunction]
l$=ln$
label$(n)=l$
return
 
[match]
#1.lb "selection? label$"
open fileName$ for input as #me
i=0
while eof(#me)=0
i=i+1
line input #me, ln$
 select case label$
    case word$(ln$, 1),ln$
        #1.te "!origin 1 ";i - 4
        exit while
    case "- TOP -"
        #1.te "!origin 1 ";1
        exit while
    case "- BOTTOM -"
        #1.te "!origin 1 ";text + blank - 34
        exit while
 end select
wend
close #me
wait
 
[nouv]
close #1
blank = 0
text = 0
redim label$(80)
goto [start]
wait
 
FUNCTION fileExists(path$, filename$)
    'DIM info$(1,1)   must be declared at the start of the prog.
    files path$, filename$, info$(  ' path$ = 'DefaultDir$' generally.
    fileExists = val(info$(0, 0))  'not zero if true
END FUNCTION
 
function GetPath$(input$)
    bsPos = len(input$)
    while mid$(input$, bsPos, 1) <> "\" and bsPos > 0
        bsPos = bsPos - 1
    wend
    if bsPos <> 0 then
        GetPath$ = left$(input$,bsPos)
    else
        GetPath$ = ""
    end if
end function
 
function GetName$(input$)
    bsPos = len(input$)
    while mid$(input$, bsPos, 1) <> "\" and bsPos > 0
        bsPos = bsPos - 1
    wend
    if bsPos <> 0 then
        GetName$ = right$(input$,len(input$)-bsPos)
    else
        GetName$ = ""
    end if
end function
   ' fonctions optimisées
'return just the directory path from a full file path
function GetPath22$(fullPath$)
    GetPath$ = fullPath$
    while right$(GetPath$, 1) <> "\" and GetPath$ <> ""
        GetPath$ = left$(GetPath$, len(GetPath$)-1)
    wend
end function
 
'return just the filename from a full file path
function GetName22$(fullPath$)
    pathLength = len(GetPath$(fullPath$))
    GetName$ = right$(fullPath$, len(fullPath$)-pathLength)
end function
 
[quit]
close #1
end
 
[quit.test]
end
 
[huh]
if Err = 9 then
    notice "Increase dim for label$()"
    close #me
    goto [quit]
end if
 
 
____________________
Roro

   
Le 14/10/2012 à 11h06

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2471
Je l'ai trouvée..heayh !
____________________
Roro

   
Le 14/10/2012 à 11h18

Libertynaute Expert

Groupe: Membre

Inscrit le: 19/02/2011
Messages: 767
Dans [zoo] il te suffit de rediriger vers [match] au lieu de [cont] que tu peux supprimer, car le rôle de [match] est d'afficher le fichier dans le texteditor à partir de la ligne qui contient la dernière sélection de la listbox ( label$() ).

J'ai simplifié tes modifs ( grandes flêches au niveau des changements )

Beaucoup de tes goto et [label] sont vraiment inutiles ;) et même quelques variables ( ex: change et chat sont identiques et ont la même valeur ! à quoi sert chat ?? )


Code VB :
 ' http://libertybasic.fr/forum/topic-209.php#m2458
nomainwin
on error goto [huh]
dim info$(1,1)
dim label$(120)  'increase if needed

  change=0
 
[start]
filedialog "Open Source File", "C:\JUST BASIC\*.bas", fileName$
if fileName$="" then
    confirm "No file chosen!"+chr$(13)+"Re-open file dialog?";yn$
    if yn$="yes" then [start] else [quit.test]
end if
 
  WindowWidth=550
  WindowHeight=750
    UpperLeftX=INT((DisplayWidth-WindowWidth)/4)
    UpperLeftY=INT((DisplayHeight-WindowHeight)/6)
  [reouvre]
        largtext=350: larglist=150
        xtext=178
 
  statictext #1.st, "", 10, 590, 100, 20
  statictext #1.st0, ">", 168, 75, 10, 20
  statictext #1.st2, "", 10, 610, 70, 20
  statictext #1.st3, "", 10, 630, 70, 20
  statictext #1.st4, "", 10, 650, 90, 20
  statictext #1.st5, "", 10, 670, 80, 20
BUTTON #1.edi, "JB's editor", [JBeditor], UL, 95, 610 , 70, 20
BUTTON #1.run, "Run tkn", [execute], UL, 95, 670 , 70, 20
 
 [ouvre]
   if change=1 then
      oui=1  'change =10
      largtext=530: larglist=0  '<-----------------------------------------------
      xtext=10
   end if
 
    texteditor #1.te, xtext, 10, largtext, 680
    MENU #1, "File", "Open", [nouv], "zoom", [zoo], "change", [change]
    listbox #1.lb, label$(), [match], 10, 10, larglist, 570
 
BackgroundColor$="lightgray"
 
    if oui=1 and change =0 then
       chat=0
       close #1
      ' open "Label Extractor  -  ";fileName$ for window_nf as #1 'reorigine   '<------------
      ' goto [reviens]
    end if
 
    if change=1 then
       chat=1
       close #1
      ' open "Label Extractor  -  ";fileName$ for window_nf as #1 ' changement
      ' goto [saute]
    end if
 
open "Label Extractor  -  ";fileName$ for window_nf as #1 'origine
 ' [saute]
 ' [reviens]

 
#1 "trapclose [quit]"
#1.te "!font Courier_New 10"
#1.lb "font Courier_New 10"
zoo=2
path$ = GetPath$(fileName$)
name$ = GetName$(fileName$)
tknfile$ = left$(name$,len(name$)-3)+"tkn"
    if chat=0 then 'goto [saut2]   ' < ----------------------------------------
        if fileExists(path$, tknfile$) = 0 then #1.run "!disable"
    end if
    '[saut2]
startTime=time$("ms")
 ' [cont]      ' <------------------------------
open fileName$ for input as #me
label$(1) = "- TOP -"
n=2
while eof(#me)=0
line input #me, ln$
    if len(ln$) = 0 then
       blank = blank + 1
    else
       text = text + 1
    end if
    if left$(trim$(ln$), 1)="[" then gosub [getlabel]:n=n+1
    if lower$(word$(trim$(ln$), 1))="sub" then gosub [getsub]:n=n+1
    if lower$(word$(trim$(ln$), 1))="function" then gosub [getfunction]:n=n+1
wend
#1.te "!contents #me"   ' met le contenu du fichier filename$ dans le texteditor.
label$(n) = "- BOTTOM -"
close #me
#1.te "!origin 1 ";1   ' affiche le fichier à partir de la première ligne.
#1.lb, "reload"
endTime=time$("ms")
   if chat=0 then 'goto [saut1]    '< -------------------------------------
  #1.st "Time = ";endTime-startTime; " ms"
  #1.st2 "Labels: ";n-2
  #1.st3 "Lines: ";text + blank
  #1.st4 "Text lines: ";text
  #1.st5 "Blank lines: ";blank
  end if
  '[saut1]
wait
 
  [change]
  change=change+1
  if change=2 then change=0
  if change = 1 then [ouvre] else [reouvre]  ' <-----------------------------------
  ' if change=1 then goto [ouvre]
  '       largtext=540: larglist=10
  '    xtext=10
  '      #1 "refresh"
  '  end if
  ' if change=0 then goto [reouvre]
  '      largtext=350: larglist=150
  '      xtext=168
  '      #1 "refresh"
  '  end if
  wait
 
[JBeditor]
    run "C:\Conteneur J\Just BASIC v1.01\jbasic.exe ";fileName$
wait
 
[execute]
    run "C:\Conteneur J\Just BASIC v1.01\jbrun101.exe ";left$(fileName$,len(fileName$)-3);"tkn"
wait
 
[zoo]
  zoo=zoo+1
  if zoo =3 then zoo=1
 ' if zoo =1 then
  #1.te "!font Courier_New ";word$("8 10",zoo)  '§§§§§§   ' <-------------------------
  #1.lb "font Courier_New ";word$("8 10",zoo)  '§§§§§§§
 ' end if
 ' if zoo =2 then
 '   #1.te "!font Courier_New 8"  '§§§§§§
 '   #1.lb "font Courier_New 8"  '§§§§§§§
 ' end if
   '#1.zoo, word$("8 10",zoo)
    goto [match] '[cont]       '<-----------------------------------------------
  wait
 
[getlabel]
l$=word$(ln$, 1)
label$(n)=l$
return
 
[getsub]
l$=ln$
label$(n)=l$
return
 
[getfunction]
l$=ln$
label$(n)=l$
return
 
[match]
#1.lb "selection? label$"
open fileName$ for input as #me
i=0
while eof(#me)=0
i=i+1
line input #me, ln$
 select case label$
    case word$(ln$, 1),ln$
        #1.te "!origin 1 ";i - 4
        exit while
    case "- TOP -"
        #1.te "!origin 1 ";1
        exit while
    case "- BOTTOM -"
        #1.te "!origin 1 ";text + blank - 38
        exit while
 end select
wend
close #me
wait
 
[nouv]
close #1
blank = 0
text = 0
redim label$(80)
goto [start]
wait
 
FUNCTION fileExists(path$, filename$)
    'DIM info$(1,1)   must be declared at the start of the prog.
    files path$, filename$, info$(  ' path$ = 'DefaultDir$' generally.
    fileExists = val(info$(0, 0))  'not zero if true
END FUNCTION
 
function GetPath$(input$)
    bsPos = len(input$)
    while mid$(input$, bsPos, 1) <> "\" and bsPos > 0
        bsPos = bsPos - 1
    wend
    if bsPos <> 0 then
        GetPath$ = left$(input$,bsPos)
    else
        GetPath$ = ""
    end if
end function
 
function GetName$(input$)
    bsPos = len(input$)
    while mid$(input$, bsPos, 1) <> "\" and bsPos > 0
        bsPos = bsPos - 1
    wend
    if bsPos <> 0 then
        GetName$ = right$(input$,len(input$)-bsPos)
    else
        GetName$ = ""
    end if
end function
   ' fonctions optimisées
'return just the directory path from a full file path
function GetPath22$(fullPath$)
    GetPath$ = fullPath$
    while right$(GetPath$, 1) <> "\" and GetPath$ <> ""
        GetPath$ = left$(GetPath$, len(GetPath$)-1)
    wend
end function
 
'return just the filename from a full file path
function GetName22$(fullPath$)
    pathLength = len(GetPath$(fullPath$))
    GetName$ = right$(fullPath$, len(fullPath$)-pathLength)
end function
 
[quit]
close #1
end
 
[quit.test]
end
 
[huh]
if Err = 9 then
    notice "Increase dim for label$()"
    close #me
    goto [quit]
end if




Edité par cassiope01 Le 14/10/2012 à 11h22
____________________
Devise Shadocks : "Mieux vaut mobiliser son intelligence pour des conneries, que mobiliser sa connerie pour des choses intelligentes"
Coluche disait : "C'est parce que la vitesse de la lumière est plus rapide que celle du son que certains peuvent paraîtrent brillants jusqu'à ce qu'ils ouvrent la bouche."

Web    
Le 14/10/2012 à 12h40

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2471
J'y suis arrivé tout seul en mettant: if chat= 1 then [match] , exactement là où tu dis. (grace au débuggeur)
Les choses inutiles, tu sais bien que c'est le défaut des débutants. ;)
Je prend ta version, sans te montrer la mienne, car je n'ai pas pu m'empecher de rajouter quelques variables....Certainement aussi inutiles .
Hey, si tu veux voir une foire aux variables et aux labels ( j'ai du augmenter le label$( ) de l'extractor pour l'y faire entrer). Jette donc un oeil sur mon dernier délire: "compose". ..et reviens me donner ton avis...Celui-la, pour l'optimiser, y'a du boulot... .......à+
____________________
Roro

   
Général » Fonction "Jump To ..." pour JB Fonction très pratique de l'éditeur LB, abscente dans JB.  

 |  |

1 Utilisateur en ligne : 0 Administrateur, 0 Modérateur, 0 Membre et 1 Visiteur
Utilisateur en ligne : Aucun membre connecté
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie