Novembre 2024 | Lun | Mar | Mer | Jeu | Ven | Sam | Dim |
---|
| | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | | Calendrier |
|
|
| Analyse/Mise en forme de sources | |
| | |
Auteur | Message |
---|
JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Analyse/Mise en forme de sources Ven 11 Jan 2013 - 17:47 | |
| J'ai essayé de combiner deux de mes programmes en un seul: analyse et mise en forme de programmes sources (à soi, ou par exemple trouvés ici sous des formes diverses). 1) Analyse, c'est à dire liste des objets, labels, variables, sous-programmes, structures etc. 2) Mise en forme: mise des mots-clés soit en majuscules, soit la 1ère lettre seule en majuscule, soit en minuscules, et ajout ou suppression des indentations en fonction des structures. Nardo avait fait une version bien plus sophistiquée de la mise en forme: https://panoramic.1fr1.net/t1773-mise-en-forme-de-fichier-source-panoramic-nieme-version?highlight=mise+en+forme mais j'ai préféré faire plus simple (et moins performant). Je précise tout de suite que le programme n'est pas parfait, et qu'il est trompé parfois par des façons de coder un peu fantaisistes ou cavalières, ou simplement inhabituelles pour moi (d'après quelques exemples que j'ai pris ici), et je n'ai pas du tout l'intention de résoudre tous les cas de figure imaginables, ça entraine trop loin. Le programme rame un peu dans la mise en forme, mais enfin on ne fait pas ça toutes les 5 minutes. Le programme a besoin de la liste des mots-clés à jour, dans un fichier particulier. Ce fichier est créé au démarrage, et mis à jour automatiquement au lancement du programme s'il y a une nouvelle version de l'Éditeur. Pour créer ce fichier à partir de la liste contenue dans l'Éditeur, on a besoin de l'utilitaire ResHacker (à trouver sur le net) Comme d'habitude, tous les chemins sont à adapter à son propre environnement. Bon voilà, c'est brut de décoffrage c'est un peu long): - Code:
-
' ======================================== ' =================== ÉDITEUR/ANALYSEUR DE SOURCES PANORAMIC ===================+ ' ======================================== LABEL Redim, Nouve, Ouvri, Sauvg, Impri, Quitt, Copie, Paste, Coupe, Recsq, Remsq LABEL Rempl, Anali, Objet, Labls, Varia, Struc, Sousp, sousp1, Subsp, Tervu, Chpol LABEL Vfont, Valfn, Aflig, Execu, Insts, Affsp, Tersp, Aider, Aprop, Error LABEL Misfo, Nomcourt ' Labels pour la partie mise en forme: LABEL Chf, Voir, Voir1, Vres, Exec, Finmf, Reb, Igno, Nana, Instri, naa, nxa LABEL Ajide, Fmef, Extraire
DIM afl%, tnl%, fpr%, fpl%, nl%, i%, j%, k%, k1%, k2%, obj$(100), nob%, stru$(100) DIM nst%, f$, fs$, ftmp$, fexe$, ff$, a$, b$, c$, d$, s$, sa$, font$, fsz%, nol$ DIM su$(100), lis$(100), sp$(100), li$(100), ap$(100), nsp%, aps$(100), nsu%, z DIM fpt$, ra$, Pansou$, Panexe$ ' Dim pour la partie mise en forme: DIM mf, mf_Mcm, mf_Pcm, mf_Jcm, mf_Ide, mf_piden DIM mf_f$, mf_fc$, mf_fo$, mf_fr$, mf_fl$, mf_fz$, mf_fa$, mf_as$ DIM mf_sa$, mf_ss$, mf_sm$, mf_ch$, mf_ps$, mf_dted$ DIM mf_ncl%, mf_jj%, mf_ls, mf_kx, mf_k1, mf_k2, mf_sk, mf_ux, mf_um, mf_nbl DIM mf_indent, mf_ip, mf_bs$, mf_mc$, mf_ns, mf_tr, mf_nf1, mf_nf2, mf_pa$ DIM mf_Edipan$, mf_ResHacker$ DIM mf_mcl$(800), mf_mcpl$(10), mf_mcmn$(10)
DATA "Objets" DATA "SCENE3D ","BUTTON ","EDIT ","MEMO ","COMBO ","ALPHA ","FORM ","LIST " DATA "PICTURE ","CHECK ","OPTION ","MAIN_MENU ","SUB_MENU ","SOUND ","MOVIE " DATA "TRACK_BAR ","OPEN_DIALOG ","SAVE_DIALOG ","SCROLL_BAR ","PROGRESS_BAR " DATA "SPIN ","GRID ","CONTAINER ","DLIST ","SCENE2D ","TIMER ","CONTAINER_OPTION " DATA "IMAGE " DATA "#" DATA "Structures" DATA "IF ","ELSE","END_IF","FOR ","NEXT ","WHILE ","END_WHILE","REPEAT","UNTIL " DATA "SELECT ","CASE ","END_SELECT" DATA "#" DATA "Struct1" DATA "IF ","FOR ","SELECT ","WHILE ","REPEAT" DATA "ELSE","END_IF","NEXT ","END_SELECT","END_WHILE","UNTIL " nob% = 0: READ a$ WHILE a$ <> "Objets": READ a$: END_WHILE WHILE a$ <> "#" nob% = nob% + 1: obj$(nob%) = a$: READ a$ END_WHILE
nst% = 0: READ a$ WHILE a$ <> "Structures": READ a$: END_WHILE WHILE a$ <> "#" nst% = nst% + 1: stru$(nst%) = a$: READ a$ END_WHILE
IF DIR_EXISTS("C:\TEMP") = 0 THEN DIR_MAKE "C:\TEMP": ' Création du répertoire temporaire ' ===================== CI-DESSOUS: CHEMINS A ADAPTER ! ======================== ftmp$ = "C:\TEMP\ftmp.tmp" fexe$ = "C:\TEMP\Testx.bas" ff$ = "C:\TEMP\Fontfix.txt": ' liste des polices fixes fpt$ = "C:\TEMP\Fprn.txt": ' fichier d'impression éventuelle ' partie mise en forme: Pansou$ = "C:\PANORAMIC": ' chemin des sources Panoramic Panexe$ = "C:\UTIL\Panoramic.exe": ' exécutable Panoramic mf_fo$ = "C:\TEMP\Tmp.bas": ' fichier résultat, mots-clés en majuscules mf_fr$ = "C:\TEMP\RESULT.bas": ' fichier résultat, avec indentations mf_fl$ = "C:\TEMP\Tmp.txt" mf_fz$ = "C:\TEMP\ppp.res": ' fichier résultat de ResHacker mf_fc$ = Pansou$ + "MclePano.txt": ' fichier des mots-clés Panoramic mf_Edipan$ = "C:\Program Files (x86)\Panoramic Editor\PANORAMIC_EDITOR.exe" f$ = mf_Edipan$: GOSUB Nomcourt: mf_Edipan$ = f$: ' <- nom court mf_ResHacker$ = "C:\UTIL\ResHacker.exe" f$ = mf_ResHacker$: GOSUB Nomcourt: mf_ResHacker$ = f$:' <- nom court
' ============================================================================== afl% = 1: ' affichage des numéros de lignes tnl% = 5: ' nombre de chiffres pour le numéro de ligne
' Menus --------------------------------------------------------------- MAIN_MENU 1
' Menu principal SUB_MENU 2: PARENT 2,1: CAPTION 2,"Fichier" SUB_MENU 3: PARENT 3,1: CAPTION 3,"Edition" SUB_MENU 4: PARENT 4,1: CAPTION 4,"Affichage" SUB_MENU 5: PARENT 5,1: CAPTION 5,"Mise en forme" SUB_MENU 6: PARENT 6,1: CAPTION 6,"Exec" SUB_MENU 8: PARENT 8,1: CAPTION 8,"Aide"
' Sous-menus 2 (Fichier) SUB_MENU 21: PARENT 21,2: CAPTION 21,"Nouveau" SUB_MENU 22: PARENT 22,2: CAPTION 22,"Ouvrir" SUB_MENU 24: PARENT 24,2: CAPTION 24,"Enregistrer" SUB_MENU 25: PARENT 25,2: CAPTION 25,"Enregistrer sous..." SUB_MENU 26: PARENT 26,2: CAPTION 26,"Imprimer" SUB_MENU 27: PARENT 27,2: CAPTION 27,"Quitter" ON_CLICK 21, Nouve: ON_CLICK 22, Ouvri: ON_CLICK 24, Sauvg ON_CLICK 25, Sauvg: ON_CLICK 26, Impri: ON_CLICK 27, Quitt
' Sous-menus 3 (Édition) SUB_MENU 31: PARENT 31,3: CAPTION 31,"Copier" SUB_MENU 32: PARENT 32,3: CAPTION 32,"Coller" SUB_MENU 33: PARENT 33,3: CAPTION 33,"Couper" SUB_MENU 34: PARENT 34,3: CAPTION 34,"Rechercher" SUB_MENU 35: PARENT 35,3: CAPTION 35,"Remplacer" ON_CLICK 31, Copie: ON_CLICK 32, Paste: ON_CLICK 33, Coupe ON_CLICK 34, Recsq: ON_CLICK 35, Remsq
' Sous-menus 4 (Affichage) SUB_MENU 41: PARENT 41,4: CAPTION 41,"Objets" SUB_MENU 42: PARENT 42,4: CAPTION 42,"Labels" SUB_MENU 43: PARENT 43,4: CAPTION 43,"Dim" SUB_MENU 44: PARENT 44,4: CAPTION 44,"Structures" SUB_MENU 45: PARENT 45,4: CAPTION 45,"Sous-programmes" SUB_MENU 46: PARENT 46,4: CAPTION 46,"." SUB_MENU 48: PARENT 48,4: CAPTION 48,"Police/taille" SUB_MENU 49: PARENT 49,4 IF afl% = 0 CAPTION 49,"Numéros de lignes" ELSE CAPTION 49,"Suppr. N°s de lignes" END_IF ON_CLICK 41, Objet: ON_CLICK 42, Labls: ON_CLICK 43, Varia ON_CLICK 44, Struc: ON_CLICK 45, Sousp ON_CLICK 48, Chpol: ON_CLICK 49, Aflig
' Sous-menu 5 (Mise en forme) SUB_MENU 51: PARENT 51,5: CAPTION 51,"Mise en forme du source" ON_CLICK 51, Misfo
' Sous-menus 6 (Exec) SUB_MENU 61: PARENT 61,6: CAPTION 61, "Exécution du code" ON_CLICK 61, Execu
' Sous-menus 8 (Aide) SUB_MENU 81: PARENT 81,8: CAPTION 81,"Aide" SUB_MENU 82: PARENT 82,8: CAPTION 82,"A propos" ON_CLICK 81, Aider: ON_CLICK 82, Aprop ' Fin menus -------------------------------------------------------------
WIDTH 0,800: HEIGHT 0,SCREEN_Y-50: ON_CLOSE 0, Quitt
FORM 90: TOP 90, 60: LEFT 90, 50: HEIGHT 90, 300: WIDTH 90, 300: HIDE 90 CAPTION 90, "Police/Taille": COLOR 90,164,255,255 LIST 91: PARENT 91, 90: TOP 91, 5: LEFT 91,5: HEIGHT 91, 190: WIDTH 91, 160 FONT_NAMES_LOAD 91: ON_CLICK 91, Vfont SPIN 92: PARENT 92, 90: TOP 92, 40: LEFT 92, 200: WIDTH 92, 60 POSITION 92, 10: MIN 92, 6: MAX 92, 64: ON_CLICK 92, Vfont ON_CHANGE 92, Vfont BUTTON 93: PARENT 93, 90: TOP 93, 160: LEFT 93, 190: WIDTH 93, 80 CAPTION 93, "OK": ON_CLICK 93, Valfn LIST 94: PARENT 94, 90: TOP 94, 200: WIDTH 94, WIDTH(90)-17: HEIGHT 94, 60 COLOR 94, 255,255,164 font$ = "Lucida Console": fsz% = 10 FONT_NAME 94, font$: FONT_SIZE 94, fsz% ITEM_ADD 94, font$ +" - 0123456789" ITEM_ADD 94, "ABCDEFGHIJKLMNOPQRSTUVWXYZ" ITEM_ADD 94, "abcdefghijklmnopqrstuvwxyz" CHECK 95: PARENT 95,90: TOP 95,10: LEFT 95,180: CAPTION 95,"Polices fixes" ON_CLICK 95, Chpol
fpr% = 100: MEMO fpr% WIDTH fpr%,WIDTH(0)-16: HEIGHT fpr%,HEIGHT(0)-58 font$ = "Lucida Console": fsz% = 10 FONT_NAME fpr%, font$: FONT_SIZE fpr%, fsz% BAR_BOTH fpr%
FORM 110: TOP 110,60: LEFT 110,100: HEIGHT 110,160: WIDTH 110,300: HIDE 110 CAPTION 110, "Recherche/remplacement" ALPHA 111: PARENT 111, 110: TOP 111, 3: LEFT 111, 10: CAPTION 111, "Séquence cherchée:" EDIT 112: PARENT 112, 110: TOP 112, 20: LEFT 112, 10: WIDTH 112, 260 ALPHA 113: PARENT 113, 110: TOP 113, 43: LEFT 113, 10: CAPTION 113, "Remplacer par:" EDIT 114: PARENT 114, 110: TOP 114, 60: LEFT 114, 10: WIDTH 114, 260 BUTTON 115: PARENT 115, 110: TOP 115, 80: LEFT 115, 100: WIDTH 115, 100 CAPTION 115, "Remplacer tout": ON_CLICK 115, Rempl
FORM 200: TOP 200,100: LEFT 200,100: WIDTH 200,WIDTH(0): HEIGHT 200,HEIGHT(0)-200 BORDER_HIDE 200: COLOR 200,255,128,0: HIDE 200 FONT_NAME 200,"Comic Sans MS": FONT_SIZE 200,12 fpl% = 201 LIST fpl%: TOP fpl%,50: LEFT fpl%, 8: PARENT fpl%,200: WIDTH fpl%,WIDTH(200)-16 HEIGHT fpl%,HEIGHT(200)-60: COLOR fpl%,255,255,192 FONT_NAME fpl%,"Lucida Console": FONT_SIZE fpl%,10 ON_CLICK fpl%, Affsp BUTTON 202: PARENT 202,200: TOP 202,25: LEFT 202,WIDTH(200)-130: WIDTH 202,120 CAPTION 202,"Retour": ON_CLICK 202, Tervu ALPHA 203: PARENT 203, 200: TOP 203, 0: LEFT 203, 100 ALPHA 204: PARENT 204, 200: TOP 204, 25: LEFT 204, 10
FORM 220: TOP 220,120: LEFT 220,200: WIDTH 220,WIDTH(200): HEIGHT 220,HEIGHT(200) BORDER_HIDE 220: COLOR 220,164,255,164: HIDE 220 FONT_NAME 220,"Comic Sans MS": FONT_SIZE 220,12 LIST 221: PARENT 221,220: TOP 221,50: LEFT 221,8: WIDTH 221,WIDTH(220)-16 HEIGHT 221, HEIGHT(220)-60 FONT_NAME 221,"Lucida Console": FONT_SIZE 221,10 BUTTON 222: PARENT 222,220: TOP 222,25: LEFT 222,WIDTH(220)-130: WIDTH 222,120 CAPTION 222,"OK": ON_CLICK 222,Tersp ALPHA 223: PARENT 223,220: TOP 223,25: LEFT 223,100
' +++++++++++++++++++++++++ PARTIE MISE EN FORME +++++++++++++++++++++++++++++++ ' MefPano.bas Mise en majuscules des mots-clés d'un source Panoramic ' et ajout des indentations.
READ mf_as$ WHILE mf_as$ <> "Struct1": READ mf_as$: END_WHILE FOR mf_jj% = 1 TO 5: READ mf_mcpl$(mf_jj%): NEXT mf_jj% FOR mf_jj% = 1 TO 6: READ mf_mcmn$(mf_jj%): NEXT mf_jj%
mf = 300 FORM mf: WIDTH mf, 500: HEIGHT mf, 250: HIDE mf CAPTION mf, " - MISE EN FORME DE SOURCES PANORAMIC -": BORDER_SMALL mf GOSUB Extraire: ' extraction éventuelle des mots-clés de Panoramic_Editor COLOR mf, 128,255,255: FONT_SIZE mf,10: FONT_BOLD mf ALPHA mf+1: PARENT mf+1,mf:CAPTION mf+1, "Source à mettre en forme:" EDIT mf+2: PARENT mf+2,mf:TOP mf+2,18: WIDTH mf+2,425: TEXT mf+2,"Clic ici pour choisir le fichier..." FONT_COLOR mf+2,0,0,255: FONT_SIZE mf+2,12: ON_CLICK mf+2, Chf BUTTON mf+3: PARENT mf+3,mf:TOP mf+3,18: WIDTH mf+3,50: LEFT mf+3,430: CAPTION mf+3,"Voir" ON_CLICK mf+3, Voir CONTAINER_OPTION mf+4: PARENT mf+4,mf:TOP mf+4,50: LEFT mf+4,10: WIDTH mf+4,210: HEIGHT mf+4,105 CAPTION mf+4, " - Mots-Clés -": COLOR mf+4, 192,255,255 OPTION mf+5: PARENT mf+5,mf+4: TOP mf+5,20: LEFT mf+5,20: CAPTION mf+5,"MAJUSCULES" OPTION mf+6: PARENT mf+6,mf+4: TOP mf+6,40: LEFT mf+6,20: CAPTION mf+6, "1ère lettre Majuscules" WIDTH mf+5, 170: WIDTH mf+6,170 OPTION mf+7: PARENT mf+7,mf+4: TOP mf+7,60: LEFT mf+7,20: CAPTION mf+7, "minuscules" OPTION mf+8: PARENT mf+8,mf+4: TOP mf+8,80: LEFT mf+8,20: CAPTION mf+8,"inchangé" MARK_ON mf+5 ALPHA mf+9: PARENT mf+9,mf:TOP mf+9, 42: LEFT mf+9, 270: FONT_COLOR mf+9,0,0,255 CHECK mf+10: PARENT mf+10,mf:TOP mf+10,65: LEFT mf+10,240: CAPTION mf+10, "Identation:": MARK_ON mf+10 SPIN mf+11: PARENT mf+11,mf:TOP mf+11,63: LEFT mf+11,340: WIDTH mf+11,40 MIN mf+11,0: MAX mf+11,10: POSITION mf+11, 4 BUTTON mf+14: PARENT mf+14,mf:TOP mf+14,105: LEFT mf+14,260: CAPTION mf+14,"Exécuter": ON_CLICK mf+14,Exec BUTTON mf+15: PARENT mf+15,mf:TOP mf+15,105: LEFT mf+15,405: CAPTION mf+15,"Quitter": ON_CLICK mf+15, Finmf ALPHA mf+16: PARENT mf+16,mf:TOP mf+16,140: LEFT mf+16,240: CAPTION mf+16,"Ligne:" ALPHA mf+17: PARENT mf+17,mf:TOP mf+17,TOP(mf+16): LEFT mf+17,LEFT(mf+16)+45 ALPHA mf+18: PARENT mf+18,mf:TOP mf+18,TOP(mf+16): LEFT mf+18,LEFT(mf+17)+45 HIDE mf+16: HIDE mf+17: HIDE mf+18 ALPHA mf+20: PARENT mf+20,mf:TOP mf+20,160: CAPTION mf+20,"Résultat:" EDIT mf+21: PARENT mf+21,mf:TOP mf+21,178: WIDTH mf+21,425: TEXT mf+21, mf_fr$ FONT_NAME mf+21,"Lucida Console": FONT_SIZE mf+21,12: FONT_COLOR mf+21,0,0,255 BUTTON mf+22: PARENT mf+22,mf:TOP mf+22,178: WIDTH mf+22,50: LEFT mf+22,430: CAPTION mf+22,"Voir" ON_CLICK mf+22, Vres HIDE mf+20: HIDE mf+21: HIDE mf+22 OPEN_DIALOG mf+29 ' form d'affichage des fichiers ource et résultat FORM mf+30: HIDE mf+30: BORDER_SMALL mf+30 TOP mf+30,20: LEFT mf+30,50: WIDTH mf+30,800: HEIGHT mf+30,SCREEN_Y-70 MEMO mf+31: PARENT mf+31,mf+30: WIDTH mf+31,WIDTH(mf+30)-16 HEIGHT mf+31,HEIGHT(mf+30)-34 FONT_NAME mf+30,"Lucida Console": FONT_SIZE mf+30,10: BAR_BOTH mf+31 ' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ' ON_ERROR_GOTO Error
END ' ============================ ' ========================== ======================== ' ============================ Error: ERROR_FRENCH MESSAGE "Erreur ligne: "+STR$(ERROR_LINE)+CHR$(10)+ERROR_TYPE$+CHR$(10)+STR$(i%)+": "+b$ TERMINATE ' +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- Redim: ' redimensionnement éventuel de la fenêtre principale par l'utilisateur ' (-> redimensionnement des fenêtres secondaires) i% = WIDTH(fpr%)+16: j% = HEIGHT(fpr%)+58 IF HEIGHT(0)<>j% OR WIDTH(0)<>i% WIDTH fpr%,WIDTH(0)-16: HEIGHT fpr%,HEIGHT(0)-58 WIDTH 200,WIDTH(0): HEIGHT 200,HEIGHT(0)-200 WIDTH fpl%,WIDTH(200)-16: HEIGHT fpl%,HEIGHT(200)-60: LEFT 202,WIDTH(200)-130 WIDTH 220,WIDTH(0): HEIGHT 220,HEIGHT(0)-200 WIDTH 221,WIDTH(220)-16: HEIGHT 221,HEIGHT(220)-60: LEFT 222,WIDTH(220)-130 END_IF RETURN ' +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- Nouve: CLEAR fpr% afl% = 0: CAPTION 49,"Numéros de lignes" RETURN ' +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- Ouvri: OPEN_DIALOG 199 DIR_DIALOG 199, Pansou$ FILTER 199,"Sources Panoramic .bas|*.bas|Tous|*.*" f$ = FILE_NAME$(199): DELETE 199 IF LEN(f$) < 3 THEN RETURN IF FILE_EXISTS(f$) = 0 THEN MESSAGE "Fichier non trouvé !": RETURN IF afl% = 0 FILE_LOAD fpr%, f$ ELSE FILE_OPEN_READ 1, f$: FILE_OPEN_WRITE 2, ftmp$ nl% = 0: CLEAR fpr% WHILE FILE_EOF(1) = 0 FILE_READLN 1, a$: nl% = nl% + 1 b$ = STRING$(tnl%-LEN(STR$(nl%)), " ")+STR$(nl%) a$ = b$ + ": " + a$ FILE_WRITELN 2, a$ END_WHILE FILE_CLOSE 1: FILE_CLOSE 2 FILE_LOAD fpr%, ftmp$: FILE_DELETE ftmp$ END_IF CAPTION 0, f$ + " " + STR$(COUNT(fpr%)) + " lignes." RETURN ' +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- Sauvg: IF COUNT(fpr%) = 0 THEN RETURN IF CLICKED(24) = 1 ' sauvegarde simple i% = MESSAGE_CONFIRMATION_YES_NO("Enregistrement sous " + f$ + " ?") IF i% <> 1 THEN RETURN fs$ = f$ ELSE ' sauvegarde sous... SAVE_DIALOG 199 FILTER 199,"Sources|*.bas|Textes|*.txt|Tous|*.*" fs$ = FILE_NAME$(199): DELETE 199 IF LEN(fs$) < 3 THEN RETURN END_IF IF afl% = 1 ' suppression des numéros de lignes dans la sauvegarde FILE_OPEN_WRITE 1, fs$ FOR i% = 1 TO COUNT(fpr%) a$ = ITEM_READ$(fpr%, i%) a$ = MID$(a$,tnl%+3,1000) FILE_WRITELN 1, a$ NEXT i% FILE_CLOSE 1 ELSE FILE_SAVE fpr%, fs$ END_IF RETURN ' +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- Impri: i% = MESSAGE_CONFIRMATION_YES_NO("Impression du source ?") IF i% <> 1 THEN RETURN i% = MESSAGE_CONFIRMATION_YES_NO("Impression avec les numéros de lignes ?") IF i% < 1 THEN RETURN FILE_SAVE fpr%, fpt$ IF i% = 2 AND afl% = 1 FILE_OPEN_WRITE 1, fpt$ FOR i% = 1 TO COUNT(fpr%) a$ = ITEM_READ$(fpr%, i%) a$ = MID$(a$, tnl%+3, 1000) FILE_WRITELN 1, a$ NEXT i% FILE_CLOSE 1 END_IF EXECUTE_WAIT "Notepad.exe /P " + fpt$ RETURN ' +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- Quitt: TERMINATE ' +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- Copie: CLIPBOARD_COPY fpr% RETURN ' +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- Paste: CLIPBOARD_PASTE fpr% RETURN ' +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- Coupe: CLIPBOARD_CUT fpr% RETURN ' +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- Recsq: IF COUNT(fpr%) = 0 THEN RETURN s$ = MESSAGE_INPUT$("Recherche séquence","Séquence cherchée:","") IF s$ = "" THEN RETURN SHOW 200: CLEAR fpl% CAPTION 204, "Séquence cherchée: " + s$ CAPTION 203, "" FOR i% = 1 TO COUNT(fpr%) a$ = RTRIM$(ITEM_READ$(fpr%, i%)) IF afl% = 1 THEN a$ = MID$(a$,tnl%+3,1000): ' ignore n° de ligne k% = INSTR(UPPER$(a$), UPPER$(s$)) IF k% > 0 b$ = STRING$(tnl%-LEN(STR$(i%)), " ") + STR$(i%) + ": " ITEM_ADD fpl%, b$ + a$ END_IF NEXT i% ITEM_ADD fpl%, STRING$(25, "-") + " Fin " + STRING$(25, "-") RETURN ' +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- Remsq: SHOW 110 RETURN ' +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- Rempl: HIDE 110 IF COUNT(fpr%) = 0 THEN RETURN s$ = TEXT$(112): IF s$ = "" THEN RETURN sr$ = TEXT$(114): nr% = 0 FOR i% = 1 TO COUNT(fpr%) a$ = ITEM_READ$(fpr%, i%) IF afl% = 1 k1% = INSTR(a$, ":"): IF k1%<8 THEN a$ = MID$(a$, k1%+2,200) END_IF k% = INSTR(a$, s$) WHILE k% > 0 a$ = LEFT$(a$, k%-1)+sr$+MID$(a$, k%+LEN(s$), 200): nr% = nr%+1 k% = INSTR(a$, s$) END_WHILE IF afl% = 1 THEN a$ = LEFT$(ITEM_READ$(fpr%,i%),k1%+1)+a$ ITEM_DELETE fpr%, i%: ITEM_INSERT fpr%, i%, a$ NEXT i% MESSAGE STR$(nr%)+" remplacements effectués." RETURN ' +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- Anali: nol$ = STRING$(tnl%-LEN(STR$(i%)), " ") + STR$(i%) + ": ": ' n° de ligne a$ = RTRIM$(ITEM_READ$(fpr%, i%)) IF afl% = 1 THEN a$ = MID$(a$,tnl%+3,1000): ' ignore n° de ligne sa$ = a$ k% = INSTR(a$, CHR$(34)) IF k% > 0 ' élimine les entre-quotes b$ = MID$(a$, k%+1, 1000): k1% = INSTR(b$, CHR$(34)) IF k1% > 0 THEN a$ = LEFT$(a$,k%-1)+MID$(a$,k%+k1%+1,1000) END_IF k% = INSTR(a$, "'"): IF k% = 0 THEN k% = INSTR(UPPER$(a$), "REM ") IF k% > 0 THEN a$ = LEFT$(a$, k%-1) a$ = RTRIM$(a$) RETURN ' +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- Objet: ' Recherche des objets IF COUNT(fpr%) = 0 THEN RETURN SHOW 200: CAPTION 203, f$ + " " + STR$(COUNT(fpr%))+" lignes." CAPTION 204, " Liste des Objets:" CLEAR fpl% FOR i% = 1 TO COUNT(fpr%) GOSUB Anali a$ = UPPER$(TRIM$(a$)) FOR j% = 1 TO nob% k% = INSTR(UPPER$(a$), obj$(j%)) IF k% > 0 THEN EXIT_FOR NEXT j% IF j% <= nob% ITEM_ADD fpl%, nol$ + sa$: display END_IF NEXT i% ITEM_ADD fpl%, STRING$(25, "-") + " Fin " + STRING$(25, "-") RETURN ' +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- Labls: ' Recherche des labels IF COUNT(fpr%) = 0 THEN RETURN SHOW 200: CAPTION 203, f$ + " " + STR$(COUNT(fpr%))+" lignes." CAPTION 204, " Liste des Labels:" CLEAR fpl% FOR i% = 1 TO COUNT(fpr%) GOSUB Anali IF a$ <> "" IF RIGHT$(a$,1) = ":" AND INSTR(a$, " ") = 0 ITEM_ADD fpl%, nol$ + sa$ ELSE IF INSTR(UPPER$(a$), "LABEL ") > 0 ITEM_ADD fpl%, nol$ + sa$ END_IF END_IF END_IF NEXT i% ITEM_ADD fpl%, STRING$(25, "-") + " Fin " + STRING$(25, "-") RETURN ' +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- Varia: ' Recherche des variables IF COUNT(fpr%) = 0 THEN RETURN SHOW 200: CAPTION 203, f$ + " " + STR$(COUNT(fpr%))+" lignes." CAPTION 204, " Liste des variables déclarées:" CLEAR fpl% FOR i% = 1 TO COUNT(fpr%) GOSUB Anali IF LEN(a$) > 3 k% = INSTR(UPPER$(a$), "DIM ") IF k% = 0 THEN k% = INSTR(UPPER$(a$), "FREE ") IF k% = 0 THEN k% = INSTR(UPPER$(a$), "DIM_LOCAL") IF k% > 0 ITEM_ADD fpl%, nol$ + sa$ END_IF END_IF NEXT i% ITEM_ADD fpl%, STRING$(25, "-") + " Fin " + STRING$(25, "-") RETURN ' +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- Struc: ' Recherche des structures IF COUNT(fpr%) = 0 THEN RETURN SHOW 200: CAPTION 203, f$ + " " + STR$(COUNT(fpr%))+" lignes." CAPTION 204, " Structures:" CLEAR fpl% FOR i% = 1 TO COUNT(fpr%) GOSUB Anali IF a$ <> "" FOR j% = 1 TO nst% b$ = stru$(j%) k% = INSTR(UPPER$(a$), b$) IF k% > 0 ITEM_ADD fpl%, nol$ + sa$: EXIT_FOR END_IF NEXT j% END_IF NEXT i% ITEM_ADD fpl%, STRING$(25, "-") + " Fin " + STRING$(25, "-") RETURN ' +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- Sousp: ' Recherche des sous-programmes IF COUNT(fpr%) = 0 THEN RETURN SHOW 200: CAPTION 203, f$ + " " + STR$(COUNT(fpr%))+" lignes." CAPTION 204, " Sous-programmes (cliquer pour le voir):" CLEAR fpl%: ITEM_ADD fpl%, "": ITEM_ADD fpl%, " Recherche...": DISPLAY nsp% = 0: nsu% = 0 FOR i% = 1 TO COUNT(fpr%) GOSUB Anali: sa$ = a$ sa$ = a$ sousp1: IF a$ <> "" AND LEFT$(a$,1)<> "'" k% = INSTR(UPPER$(a$), "GOSUB ") IF k% > 0 k% = k%+6 ELSE k% = INSTR(UPPER$(a$), "ON_CLICK ") IF k% > 0 FOR j% = k%+8 TO LEN(a$) IF MID$(a$, j%, 1) = "," THEN EXIT_FOR NEXT j% k% = j%+1: IF k% > LEN(a$) THEN k% = 0 END_IF END_IF IF k% > 0 b$ = LTRIM$(MID$(a$, k%, 500)) k% = INSTR(b$, ":"): ra$ = "" IF k% > 0 c$ = RTRIM$(LEFT$(b$, k%-1)): ra$ = MID$(a$, k%+1, 500) ELSE c$ = RTRIM$(b$) END_IF j% = nsp% + 1 IF nsp% > 0 FOR j% = 1 TO nsp% IF sp$(j%) = c$ THEN EXIT_FOR NEXT j% END_IF IF j% > nsp% nsp% = nsp% + 1: sp$(nsp%) = c$ END_IF IF ra$ <> "" THEN a$ = ra$: GOTO sousp1 END_IF END_IF NEXT i%
FOR i% = 1 TO COUNT(fpr%) GOSUB Anali: a$ = TRIM$(a$): s$ = a$ FOR j% = 1 TO nsp% a$ = s$: b$ = sp$(j%) k% = INSTR(upper$(a$), upper$(b$)) IF k% > 0 IF LEFT$(upper$(a$), LEN(b$)+1) = upper$(b$)+":" li$(j%) = nol$: ' ligne de l'étiquette ELSE a$ = LEFT$(a$, k%-1): a$ = STRING$(25," ") + a$ a$ = UPPER$(RIGHT$(a$, 25)) k% = INSTR(a$, "GOSUB ") IF k% = 0 k% = INSTR(a$, "GOTO ") IF k% = 0 THEN k% = INSTR(a$, "ON_CLICK ") END_IF IF k% > 0 ap$(j%) = ap$(j%) + STR$(i%) + ", " END_IF END_IF END_IF NEXT j% NEXT i% CLEAR fpl% FOR i% = 1 TO nsp% b$ = sp$(i%): IF LEN(b$)<16 THEN b$ = b$ + STRING$(16-LEN(b$)," ") s$ = ap$(i%): IF s$ <> "" THEN s$ = LEFT$(s$, LEN(s$)-2) ITEM_ADD fpl%, li$(i%) + b$ + "(" + s$ + ")" NEXT i% ITEM_ADD fpl%, STRING$(25, "-") + " Fin S/P " + STRING$(25, "-") GOSUB Subsp RETURN ' +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- Subsp: ' Recherche des SUBs nsu% = 0 FOR i% = 1 TO COUNT(fpr%) GOSUB Anali IF LEFT$(UPPER$(a$), 4) = "SUB " b$ = MID$(a$, 5,100): k% = INSTR(b$, ":") IF k% > 0 THEN b$ = TRIM$(LEFT$(b$, k%-1)) k% = INSTR(b$, "(") IF k% > 0 THEN b$ = LEFT$(b$, k%) nsu% = nsu% + 1: su$(nsu%) = b$ lis$(nsu%) = nol$ END_IF NEXT i% IF nsu% > 0 FOR i% = 1 TO COUNT(fpr%) GOSUB Anali: a$ = TRIM$(a$): s$ = a$ FOR j% = 1 TO nsu% b$ = su$(j%) IF INSTR(a$, b$) > 0 AND INSTR(UPPER$(a$), "SUB ") < 1 aps$(j%) = aps$(j%)+STR$(i%)+", " END_IF NEXT j% NEXT i% FOR i% = 1 TO nsu% b$ = su$(i%): IF LEN(b$)<16 THEN b$ = b$ + STRING$(16-LEN(b$)," ") s$ = aps$(i%): IF s$ <> "" THEN s$ = LEFT$(s$, LEN(s$)-2) ITEM_ADD fpl%, lis$(i%) + b$ + "(" + s$ + ")" NEXT i% ITEM_ADD fpl%, STRING$(25, "-") + " Fin SUB" + STRING$(25, "-") END_IF RETURN ' +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- Tervu: HIDE 200 RETURN ' +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- Chpol: SHOW 90 FONT_NAMES_LOAD 91 IF CHECKED(95) = 1: ' polices fixes uniquement IF FILE_EXISTS(ff$) = 0 PICTURE 300: TOP 300,-200 FILE_OPEN_WRITE 1, ff$ FOR i% = 1 TO COUNT(91) FONT_NAME 300,ITEM_READ$(91,i%) IF TEXT_WIDTH("iiiii",300) = TEXT_WIDTH("mmmmm",300) FILE_WRITELN 1, ITEM_READ$(91,i%) END_IF NEXT i% FILE_CLOSE 1: DELETE 300 END_IF FILE_LOAD 91, ff$: ' seulement les polices fixes END_IF RETURN ' +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- Vfont: CLEAR 94 IF ITEM_INDEX(91) > 0 THEN font$ = ITEM_INDEX$(91) fsz% = POSITION(92) FONT_NAME 94, font$: FONT_SIZE 94, fsz% ITEM_ADD 94, font$ + " - 01234567890" ITEM_ADD 94, "ABCDEFGHIJKLMNOPQRSTUVWXYZ" ITEM_ADD 94, "abcdefghijklmnopqrstuvwxyz" RETURN ' +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- Valfn: IF ITEM_INDEX(91) > 0 THEN font$ = ITEM_INDEX$(91) fsz% = POSITION(92) FONT_NAME fpr%, font$: FONT_SIZE fpr%, fsz% HIDE 90 RETURN ' +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- Aflig: FILE_OPEN_WRITE 2, ftmp$ IF afl% = 0 FOR nl% = 1 TO COUNT(fpr%) a$ = ITEM_READ$(fpr%, nl%) FILE_WRITELN 2, STRING$(tnl%-LEN(STR$(nl%)), " ") + STR$(nl%) + ": " + a$ NEXT nl% afl% = 1: CAPTION 49, "Suppr. N°s de lignes" ELSE FOR nl% = 1 TO COUNT(fpr%) a$ = ITEM_READ$(fpr%, nl%) k% = INSTR(a$, ": ") IF k% <= (tnl%+1) IF LEN(a$)>(k%+1) a$ = MID$(a$, k%+2, LEN(a$)-k%-1) ELSE a$ = "" END_IF END_IF FILE_WRITELN 2, a$ NEXT nl% afl% = 0: CAPTION 49, "Numéros de lignes" END_IF FILE_CLOSE 2 CLEAR fpr% FILE_LOAD fpr%, ftmp$: FILE_DELETE ftmp$ RETURN ' +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- Execu: MESSAGE "Fonction non implémentée !": RETURN FILE_SAVE fpr%, fexe$ EXECUTE_WAIT Panexe$ + " " + fexe$ FILE_DELETE fexe$ RETURN ' +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- Insts: ' recherche de b$ dans la chaîne a$, à partir de l'index z, résultat dans z DIM cts$, kts% cts$ = MID$(a$, z, 200) kts% = INSTR(cts$, b$) IF kts% > 0 z = z + kts% - 1 ELSE z = 0 END_IF FREE cts$: FREE kts% RETURN ' +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- Affsp: ' affichage du sous-programme cliqué dans la liste a$ = ITEM_INDEX$(fpl%) IF LEFT$(a$, 1) = "-" THEN RETURN k% = INSTR(a$, ":"): a$ = TRIM$(MID$(a$, k%+2, 200)): ' saute n° de ligne b$ = a$: k% = INSTR(a$, " "): IF k% > 0 THEN b$ = LEFT$(b$, k%-1) CAPTION 223, "Sous-programme: " + b$ SHOW 220 CLEAR 221 c$ = "SUB " + b$: b$ = b$ + ":" FOR i% = 1 TO COUNT(fpr%) a$ = TRIM$(ITEM_READ$(fpr%, i%)) IF afl% = 1 THEN k% = INSTR(a$,":"): a$ = MID$(a$,k%+2,1000): ' ignore n° de ligne IF LEFT$(a$,LEN(b$))=b$ OR LEFT$(a$,LEN(c$))=c$ FOR j% = i% TO COUNT(fpr%) a$ = ITEM_READ$(fpr%, j%) ITEM_ADD 221, a$ IF afl% = 1 THEN a$ = MID$(a$,tnl%+3,1000): ' ignore n° de ligne k% = INSTR(UPPER$(TRIM$(a$)), "RETURN") IF k% = 0 THEN k% = INSTR(UPPER$(TRIM$(a$)), "END_SUB") IF k% = 1 THEN EXIT_FOR IF INSTR(UPPER$(TRIM$(a$)), "TERMINATE") > 0 THEN EXIT_FOR NEXT j% EXIT_FOR END_IF NEXT i% RETURN ' +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- Tersp: HIDE 220 RETURN ' +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- Aider: MESSAGE "Aide inexistante !"
RETURN ' +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- Aprop:
RETURN ' ============================================================================== ' - MISE EN FORME - ' ============================================================================== Finmf: ' Fin de mise en forme HIDE mf RETURN ' ============================================================================== Misfo: SHOW mf: ' RETURN Chf: IF f$ <> "" mf_f$ = f$ ELSE ' Acquisition du fichier à mettre en forme mf_as$ = DIR_CURRENT$: ' sauvegarde répertoire courant DIR_CHANGE Pansou$ FILTER mf+29, "Sources .bas|*.bas" mf_f$ = FILE_NAME$(mf+29) DIR_CHANGE mf_as$: IF mf_f$ = "_" THEN RETURN IF FILE_EXISTS(mf_f$) = 0 MESSAGE mf_f$ + CHR$(10) + "Fichier non trouvé !": RETURN END_IF END_IF FONT_NAME mf+2,"Lucida Console": TEXT mf+2, mf_f$ FILE_OPEN_READ 1, mf_f$: mf_jj% = 0 WHILE FILE_EOF(1) = 0: FILE_READLN 1, mf_as$: mf_jj% = mf_jj% + 1: END_WHILE FILE_CLOSE 1 CAPTION mf+9, STR$(mf_jj%)+" lignes." CAPTION mf+18,"/ "+STR$(mf_jj%) RETURN ' ============================================================================== Voir: mf_f$ = TEXT$(mf+2) Voir1: CLEAR mf+31: SHOW mf+30 FILE_OPEN_READ 9, mf_f$: mf_jj% = 0 WHILE FILE_EOF(9) = 0 FILE_READLN 9, mf_as$ mf_jj% = mf_jj% + 1: ITEM_ADD mf+31,RIGHT$(" "+STR$(mf_jj%),5)+": "+mf_as$: ' n°s de lignes END_WHILE FILE_CLOSE 9 RETURN ' ============================================================================== Vres: mf_f$ = mf_fr$: GOSUB Voir1 RETURN ' ============================================================================== EXECUTE "Notepad.exe " + mf_fr$ RETURN ' ============================================================================== Exec: ' Mise en forme des mots-clés de Panoramic mf_f$ = TEXT$(mf+2) IF FILE_EXISTS(mf_f$) = 0 THEN MESSAGE "Pas de fichier !": RETURN mf_Pcm = 0: mf_Mcm = 0: mf_Jcm = 0: mf_Ide = 0 IF CHECKED(mf+5) = 1 THEN mf_Mcm = 1 IF CHECKED(mf+6) = 1 THEN mf_Pcm = 1 IF CHECKED(mf+7) = 1 THEN mf_Jcm = 1 IF CHECKED(mf+10) = 1 THEN mf_Ide = 1: mf_piden = POSITION(mf+11) IF mf_Mcm = 0 AND mf_Pcm = 0 AND mf_Ide = 0 ' MESSAGE "Aucune mise en forme demandée, abandon !": RETURN END_IF IF mf_Mcm = 0 AND mf_Pcm = 0 AND mf_Jcm = 0 THEN mf_fa$ = mf_f$: GOTO Ajide: ' mots-clé inchangés IF mf_Ide = 0 mf_fa$ = mf_fr$ ELSE mf_fa$ = mf_fo$ END_IF SHOW mf+16: SHOW mf+17: SHOW mf+18 mf_nf1 = 21: mf_nf2 = 22 FILE_OPEN_READ mf_nf1, mf_f$: mf_nbl = 0 FILE_OPEN_WRITE mf_nf2, mf_fa$ WHILE FILE_EOF(mf_nf1) = 0 FILE_READLN mf_nf1, mf_as$: mf_nbl = mf_nbl + 1 CAPTION mf+17, STR$(mf_nbl) mf_ps$ = UPPER$(LTRIM$(mf_as$)) IF mf_ps$ = "" OR LEFT$(mf_as$, 1) = "'" OR LEFT$(mf_ps$, 3) = "REM" THEN GOTO Igno mf_um = LEN(mf_as$): mf_ch$ = mf_as$: mf_k1 = 0: ' mf_um = limite de recherche mf_kx = INSTR(UPPER$(mf_ch$), "REM"): IF mf_kx > 0 THEN mf_um = mf_kx + 3: ' commentaire mf_kx = INSTR(mf_ch$, "'"): IF mf_kx > 0 THEN mf_um = mf_kx + 3: ' commentaire mf_sa$ = CHR$(34): mf_kx = INSTR(mf_ch$, mf_sa$): mf_k1 = mf_kx: ' pour ignorer les mots entre quotes IF mf_k1 > 0 mf_ux = mf_k1 + 1: GOSUB Instri: mf_k2 = mf_kx ELSE mf_k1 = LEN(mf_as$): mf_k2 = 0 END_IF ' Recherche de tous les mots-clés de la table dans mf_as$ FOR mf_jj% = 1 TO mf_ncl% mf_sa$ = mf_mcl$(mf_jj%): mf_ls = LEN(mf_sa$): mf_sm$ = mf_sa$ mf_ux = 1 Reb: mf_ch$ = UPPER$(mf_as$): GOSUB Instri IF mf_kx > 1 mf_tr = ASC(MID$(mf_as$, mf_kx-1, 1)): IF mf_tr>64 THEN GOTO nxa END_IF IF mf_kx > 0 AND mf_kx < mf_um IF mf_kx < mf_k1 OR mf_kx > mf_k2 IF LEN(mf_as$) >= (mf_kx + mf_ls) mf_ss$ = MID$(mf_as$, mf_kx + mf_ls, 1) IF mf_ss$<>" " AND mf_ss$<>"(" AND mf_ss$<>":" GOTO naa END_IF END_IF IF mf_Pcm = 1 ' 1ère lettre en majuscule mf_sm$ = LEFT$(mf_sm$, 1) + LOWER$(MID$(mf_sm$, 2, mf_ls-1)): ' 1ère lettre mf_sk = mf_kx: mf_ss$ = mf_sa$ mf_ux = 1: mf_ch$ = mf_sm$: mf_sa$ = "_": GOSUB Instri WHILE mf_kx > 0 mf_ch$ = LEFT$(mf_ch$,mf_kx)+UPPER$(MID$(mf_ch$,mf_kx+1,1))+MID$(mf_ch$,mf_kx+2,100) mf_ux = mf_kx + 1: GOSUB Instri END_WHILE mf_sm$ = mf_ch$ mf_kx = mf_sk: mf_sa$ = mf_ss$: ' restore ELSE IF mf_Jcm = 1 mf_sm$ = LOWER$(mf_sm$): ' mot-clé en minuscules END_IF END_IF IF mf_kx > 1 IF mf_kx = LEN(mf_as$) - mf_ls + 1 mf_as$ = LEFT$(mf_as$, mf_kx-1) + mf_sm$ ELSE mf_as$ = LEFT$(mf_as$, mf_kx-1) + mf_sm$ + RIGHT$(mf_as$, LEN(mf_as$)-mf_kx-mf_ls+1) END_IF ELSE IF LEN(mf_as$) > mf_ls mf_as$ = mf_sm$ + RIGHT$(mf_as$, LEN(mf_as$)-mf_ls) ELSE mf_as$ = mf_sm$ END_IF END_IF naa: mf_ux = mf_kx + mf_ls: GOTO Reb: 'trouvé, recherche si occurence suivante END_IF END_IF nxa: NEXT mf_jj% Igno: FILE_WRITELN mf_nf2, mf_as$ END_WHILE FILE_CLOSE mf_nf1 FILE_CLOSE mf_nf2 IF mf_Ide = 0 THEN GOTO Fmef Ajide: ' -------------------------- Ajout des indentations ---------------------------- FILE_OPEN_READ mf_nf1, mf_fa$: mf_nbl = 0 FILE_OPEN_WRITE mf_nf2, mf_fr$ mf_indent = 0 WHILE FILE_EOF(mf_nf1) = 0 FILE_READLN mf_nf1, mf_as$: mf_nbl = mf_nbl + 1 CAPTION mf+17, STR$(mf_nbl) mf_as$ = TRIM$(mf_as$): mf_ip = 0: mf_tr = 0 IF mf_as$ = "" THEN GOTO Nana IF mf_Ide = 0 THEN GOTO Nana: ' = suppression des indentations éventuelles FOR mf_jj% = 1 TO 5 mf_mc$ = mf_mcpl$(mf_jj%) IF LEN(mf_as$) >= LEN(mf_mc$) mf_bs$ = LEFT$(UPPER$(mf_as$), LEN(mf_mc$)) IF mf_bs$ = mf_mc$ IF mf_bs$ = "IF " mf_ch$ = "THEN " IF INSTR(UPPER$(mf_as$), mf_ch$) > 0 THEN mf_tr = 1: EXIT_FOR ELSE IF mf_bs$ = "FOR " mf_ch$ = "NEXT " IF INSTR(UPPER$(mf_as$), mf_ch$) >0 THEN mf_tr = 1: EXIT_FOR ELSE IF mf_bs$ = "WHILE " mf_ch$ = "END_WHILE" IF INSTR(UPPER$(mf_as$), mf_ch$) >0 THEN mf_tr = 1: EXIT_FOR ELSE IF mf_bs$ = "REPEAT" mf_ch$ = "UNTIL " IF INSTR(UPPER$(mf_as$), mf_ch$) >0 THEN mf_tr = 1: EXIT_FOR END_IF END_IF END_IF END_IF mf_ip = mf_piden: mf_tr = 1: EXIT_FOR END_IF END_IF NEXT mf_jj% IF mf_tr = 0 FOR mf_jj% = 1 TO 6 mf_mc$ = mf_mcmn$(mf_jj%) IF LEN(mf_as$) >= LEN(mf_mc$) mf_bs$ = LEFT$(UPPER$(mf_as$), LEN(mf_mc$)) IF mf_bs$ = mf_mc$ mf_indent = mf_indent - mf_piden: mf_tr = 1: EXIT_FOR END_IF END_IF NEXT mf_jj% END_IF IF mf_bs$ = "ELSE" THEN mf_ip = mf_piden mf_ns = mf_indent IF mf_tr = 0 AND INSTR(mf_as$, ":") > 0 AND INSTR(mf_as$, " ") < 1 mf_ns = 0: ' c'est une étiquette END_IF IF mf_ns > 0 THEN mf_as$ = STRING$(mf_ns, " ") + mf_as$ Nana: FILE_WRITELN mf_nf2, mf_as$ mf_indent = mf_indent + mf_ip END_WHILE FILE_CLOSE mf_nf1 FILE_CLOSE mf_nf2 IF mf_fa$ = mf_fo$ THEN FILE_DELETE mf_fo$ HIDE mf+16: HIDE mf+17: HIDE mf+18 Fmef: ' recopie du résultat formaté dans la fenêtre principale FILE_OPEN_READ 1, mf_fr$: FILE_OPEN_WRITE 2, ftmp$ nl% = 0: CLEAR fpr% WHILE FILE_EOF(1) = 0 FILE_READLN 1, a$: nl% = nl% + 1 b$ = STRING$(tnl%-LEN(STR$(nl%)), " ")+STR$(nl%) a$ = b$ + ": " + a$ FILE_WRITELN 2, a$ END_WHILE FILE_CLOSE 1: FILE_CLOSE 2 FILE_LOAD fpr%, ftmp$: FILE_DELETE ftmp$ FILE_DELETE mf_fr$ GOSUB Finmf ' MESSAGE "Résultat dans:" + CHR$(13) + CHR$(10) + mf_fr$ RETURN ' ============================================================================== Instri: ' recherche de la séquence mf_sa$ dans mf_ch$, à partir de la position mf_ux ' position rendue dans mf_kx (ou 0: non trouvé) mf_ps$ = RIGHT$(mf_ch$, LEN(mf_ch$) - mf_ux + 1) mf_kx = INSTR(mf_ps$, mf_sa$) IF mf_kx > 0 THEN mf_kx = mf_kx + mf_ux - 1 RETURN ' ============================================================================== Extraire: ' Extraction des mots-clés Panoramic de Panoramic_Editor DLIST 999 EXECUTE_WAIT "CMD.exe /c DIR " + mf_Edipan$ + " >" + mf_fl$ FILE_LOAD 999, mf_fl$: FILE_DELETE mf_fl$ mf_dted$ = LEFT$(ITEM_READ$(999,6), 17): ' date/heure de Panoramic_Editor actuel DELETE 999 IF FILE_EXISTS(mf_fc$) = 1 FILE_OPEN_READ 1, mf_fc$: FILE_READLN 1, mf_as$ IF mf_as$ = mf_dted$ ' Fichier des mots-clés déjà à jour, report dans la table mf_pa$ = "": mf_ncl% = 0 WHILE FILE_EOF(1) = 0 FILE_READLN 1, mf_as$ IF mf_as$ <> mf_pa$ THEN mf_ncl% = mf_ncl% + 1: mf_mcl$(mf_ncl%) = mf_as$ mf_pa$ = mf_as$ END_WHILE FILE_CLOSE 1 RETURN END_IF FILE_CLOSE 1 END_IF ' Extraction PRINT: PRINT "Patience, mise à jour de la liste des mots-clés en cours..." EXECUTE_WAIT mf_ResHacker$+" -extract "+mf_Edipan$+", "+mf_fz$+", RCData, KEYWORDS, 1036" FILE_OPEN_READ 1, mf_fz$: FILE_OPEN_WRITE 2, mf_fc$ WHILE FILE_EOF(1) = 0 FILE_READLN 1, mf_as$ IF mf_as$ = "0" FILE_READLN 1, mf_as$ mf_kx = INSTR(mf_as$, " "): IF mf_kx>0 THEN mf_as$ = LEFT$(mf_as$, mf_kx-1) mf_kx = INSTR(mf_as$, "("): IF mf_kx>0 THEN mf_as$ = LEFT$(mf_as$, mf_kx-1) FILE_WRITELN 2, mf_as$ END_IF END_WHILE FILE_CLOSE 1: FILE_CLOSE 2: FILE_DELETE mf_fz$ EXECUTE_WAIT "Cmd.exe /c SORT " + mf_fc$ + " /O " + mf_fl$: ' Tri alpha FILE_OPEN_READ 1, mf_fl$: FILE_OPEN_WRITE 2, mf_fc$ ' Elimination des redondances: certaines fonctions ont demf_ux formes, par exemple ' SHOW n et SHOW(n), ou POSITION n,v et v = POSITION(n). On ne garde ici ' qu'une seule forme. mf_pa$ = "": mf_ncl% = 0 FILE_WRITELN 2, mf_dted$: ' 1ère ligne: date/heure du Panoramic_Editor actuel WHILE FILE_EOF(1) = 0 FILE_READLN 1, mf_as$ IF mf_as$ <> mf_pa$ THEN FILE_WRITELN 2, mf_as$: mf_ncl% = mf_ncl% + 1: mf_mcl$(mf_ncl%) = mf_as$ mf_pa$ = mf_as$ END_WHILE FILE_CLOSE 1: FILE_CLOSE 2: FILE_DELETE mf_fl$ RETURN ' ============================================================================== Nomcourt: ' Récupération du chemin court d'un fichier (sans espaces) en fonction de son chemin long IF File_Exists(f$) = 0 f$ = "Path inexistant !" ELSE File_Open_Write 1, "C:\TEMP\Fnco.bat" File_WriteLn 1, "@echo off" File_WriteLn 1, "for %%A in ("+chr$(34)+f$+chr$(34)+") do echo.%%~sfA >C:\TEMP\Fnco.txt" File_Close 1 EXECUTE_WAIT "C:\TEMP\Fnco.bat" File_Open_Read 1, "C:\TEMP\Fnco.txt": File_ReadLn 1, f$: File_Close 1 File_Delete "C:\TEMP\Fnco.txt": File_Delete "C:\TEMP\Fnco.bat" END_IF RETURN
Dernière édition par JL35 le Dim 13 Jan 2013 - 16:14, édité 7 fois | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| | | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Analyse/Mise en forme de sources Ven 11 Jan 2013 - 17:56 | |
| Tu sais bien qu'on n'est jamais trop prudent, alors mes précautions oratoires, ce n'est pas pour des prunes. Je vous vois d'ici arriver avec tous vos petits cas particuliers , alors j'essaie de me protéger, pas par un bouclier, carrément une armure en acier trempé. J'ai déjà vécu cela... jjn4, tu nous regardes ? PS j'ai mis un timer pour le cas où l'utilisateur voudrait redimensionner la fenêtre, ça ne sert pas à grand chose, et surtout ça provoque parfois des runtime error (sans doute un genre de débordement de pile), je crois bien que je vais le faire sauter. C'est fait. | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Analyse/Mise en forme de sources Sam 12 Jan 2013 - 0:33 | |
| Salut JL35. J’ai parcouru sommairement le programme sans bien regarder dedans : j’avais hâte de voir le résultat de l’exécution. Après avoir adapté les différents répertoires à ma configuration (sur plusieurs lignes et non contiguës), j’ai lancé l’exécution, j'ai fait le test : c’est OKDeux petites remarques : La 1ère : Si le répertoire …\TEMP n’existe pas === > message d’erreur : Impossible to load the FILE. Line 965 C’est très facile d’ajouter un test pour éviter cette erreur. La 2ème : Je clique sur Fichier , Nouveau , puis je tape les 2 lignes suivantes : - Code:
-
print "salut" print "fin"
Je sauvegarde mon fichier par exemple sous Test.bas. Je quitte, je reéxecute, je clique cette fois sur Fichier, Ouvrir , je choisis mon fichier que j’ai créé précédemment , je l’ouvre et .... surprise ! Il contient seulement : - Code:
-
Salut" Fin"
Je refais un autre fichier (identique au précédent) que j’ai sauvegardé cette fois sous Test.txt : même resultat PS : De toute façon merci pour ce programme, certes perfectible, et qui peut rendre service ! A compléter donc ! EDIT : Après avoir regardé, le sous programme Nouve, je me suis aperçu que Fichier, Nouveau ne sert pas à taper un nouveau fichier, comme je l’ai cru mais à vider simplement le MEMO correspondant. | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Analyse/Mise en forme de sources Sam 12 Jan 2013 - 1:27 | |
| Merci pour ton regard papydall, je rentre seulement et je verrai tout ça demain... bonne nuit ! | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Analyse/Mise en forme de sources Sam 12 Jan 2013 - 2:02 | |
| | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Analyse/Mise en forme de sources Sam 12 Jan 2013 - 11:14 | |
| Bonjour papydall... et les autres !
J'ai tenu compte de tes remarques judicieuses:
1) si le répertoire TEMP n'existe pas... il est créé.
2) Concernant le menu 'Nouveau', il y a bien la possibilité de saisir un nouveau code, simplement la troncature à la sauvegarde venait du fait que je supposais qu'il y avait un numéro de ligne en tête, que je supprimais... bon, c'est réparé.
De plus j'ai regroupé les labels, dims et ressources externes en tête pour y voir plus clair.
Le programme paraît un peu désordonné, en fait comme je disais il s'agit d'une compilation de deux programmes différents qu'il m'a paru utile de rassembler, mais je n'ai pas eu le courage de les fusionner pour en faire un nouveau, je les ai grossièrement empilés... d'où des redondances, on aurait pu économiser des variables, objets, structures, etc... | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Analyse/Mise en forme de sources Sam 12 Jan 2013 - 13:12 | |
| . JL35 Ça devient de plus en plus intéressant ! Je vais jouer le rôle de Jean Claude (pour te donner du boulot). Plutôt simple suggestions : Dans le menu Affichages (Objets, Labels, Dim, Structures, Sous-programmes, Police/Taille, Supp.N° de Ligne), il sera intéressant d’ajouter DIM_LOCAL. Pour les sous-programmes, je constate que seuls ceux déclarés par LABEL et appelés par GOSUB/RETURN sont pris en charge. Les SUB/END_SUB sont ignorés. Tu t’es fâché avec les SUB ? (JE PLAISANTE). Bon, j’arrête maintenant : il y aura sans doute d’autres réactions dans le but de l’amélioration du programme. A+ | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Analyse/Mise en forme de sources Sam 12 Jan 2013 - 14:58 | |
| Pour les Dim_Local, pas de problème. Non je ne suis pas fâché avec les Sub, mais quand j'ai écrit le programme ça n'existait pas encore ! ça doit pouvoir s'implémenter sans problème non plus. | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Analyse/Mise en forme de sources Sam 12 Jan 2013 - 17:18 | |
| J'aurais bien aimé préparer une liste de truc pour améliorer le programme Mais il y a un mais, JL35 dans sa grande prudence s'est dit: "Il ne faut pas que ce programme fonctionne chez Jean Claude". Et c'est le cas ! Dès que j'envoi j'ai "index off bound (5)" et ensuite je peux cliquer dans le menu, NADA.... Qu'est-ce qui se passe t-il. A+ | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Analyse/Mise en forme de sources Sam 12 Jan 2013 - 17:26 | |
| Salut Jean Claude. J’ai eu le même problème que toi ! Tu as certainement oublié d’adapter un certain répertoire (lignes 53 à 64 : probablement la ligne 63). | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Analyse/Mise en forme de sources Sam 12 Jan 2013 - 17:47 | |
| Merci Papydall mais je n'y arrive pas. J'ai modifié la ligne 63 mais çà ne change rien. les autres repertoires , je suppose qu'il se crées automatiquement A+ | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Analyse/Mise en forme de sources Sam 12 Jan 2013 - 18:45 | |
| C'est corrigé pour les SUB et les DIM_LOCAL Bonsoir Jean Claude, je ne vois pas très bien ce qui cloche chez toi (enfin, je veux dire, dans le programme chez toi ) En effet à part les chemins d'accès comme dit papydall il n'y a rien de particulier, les fichiers provisoires sont créés, les seuls chemins à bien préciser sont celui de l'Editeur Panoramic (mf_Edipan$) et celui de ResHacker (mf_ResHacker$). A moins, à moins, j'y pense, et ça y ressemble bigrement (out of bound) que tu n'analyses un programme kilométrique qui fait exploser les tables internes. En effet, j'ai défini arbitrairement des tables de 100 éléments pour tout, labels, sous-programmes, etc..., et c'est peut-être ça qu'il faudrait redimensionner chez toi (DIM des lines 12 à 14). Edit à 23h, quelques petites modifs de dernière minute. | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Analyse/Mise en forme de sources Sam 12 Jan 2013 - 23:45 | |
| @JL35 OK, ça fonctionne comme sur des roulettes ! @Jean Claude Ton problème réside vraisemblablement aux lignes 63 et 64. Par exemple, chez moi, PANORAMIC_EDITOR s’appelle PANORAMIC_EDITOR24i7.exeAdapte ces 2 lignes à ta configuration et n’oublie pas non plus la ligne 278 et ça devrait marcher - Code:
-
mf_Edipan$ = "D:\PANORAMIC\PANORAMIC_EDITOR24i7.exe": ' Editeur Panoramic mf_ResHacker$ = "D:\Resource_Hacker\ResHacker.exe"
Quant aux tables qui sont définies à 100 éléments, elles n’ont rien à voir avec List index out of bounds(5) puisque le programme n’a pas démarré ! | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Analyse/Mise en forme de sources Dim 13 Jan 2013 - 10:11 | |
| Bonjour, Toujous ce problème "index off bound (5)" J'ai rectifié les chemins: - Code:
-
mf_Edipan$ = "C:\Documents and Settings\MOI\Bureau\PANORAMIC_EDITOR24i7.exe": ' Editeur Panoramic mf_ResHacker$ = "C:\Program Files\Resource Hacker\ResHacker.exe"
Alors je ne comprend pas. A moins que: si je lance une recherche de "MclePano.txt". Windows ne me le trouve pas ??? Est-ce que ce fichier doit être téléchargé (pour moi il est avec Panoramic) ??? Ou alors c'est du au fait que je soit sous XP et vous sur W7 ??? et cette ligne EXECUTE_WAIT "CMD.exe /c DIR " + mf_Edipan$ + " >" + mf_fl$ ne serait pas conforme ??? | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Analyse/Mise en forme de sources Dim 13 Jan 2013 - 12:26 | |
| Vérifie que les programmes ne sont pas dans "C:\Program Files (x86)" | |
| | | Invité Invité
| Sujet: Re: Analyse/Mise en forme de sources Dim 13 Jan 2013 - 12:31 | |
| Bonjour Jean-Claude. Il y a une chose qui ne va pas. Tu sais qu'avec EXECUTE de Panoramic, si tu laisses un espace dans le chemin, le restant devient un passage de paramètre. Évites de mettre des programmes qui sont appelés par Panoramic dans les chemins proposés par l'installateur, et choisis ton propre chemin sans espace. Où alors met un nom court dans l'appel du programme à exécuter. Bonjour Jicehel, on se croise. Reshacker dans son cas est dans programme files avec un espace. |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Analyse/Mise en forme de sources Dim 13 Jan 2013 - 13:33 | |
| Bonjour Jean Claude et tous, cosmos a raison, tu ne dois pas avoir d'espaces dans les chemins d'accès, il faut impérativement mettre les versions 'courtes', sans espaces, sinon ça coince. Il y a eu des programmes publiés ici pour transformer des versions de chemins 'longues' en version 'courtes'. Ici par exemple: https://panoramic.1fr1.net/t569-conversion-chemin-long-chemin-court-83?highlight=chemin+courtPanoramic_Editor.exe s'installe dans PROGRA~2 (Program Files (x86) sous W7 et dans PROGRA~1 (Program Files) sous XP et Vista. Et comme dit papydall il peut s'appeler un peu différemment (PANORAMIC_EDITOR24i7.exe). ResHacker on peut le mettre n'importe où je crois (par exemple chez moi sous C:\UTIL). MclePano.txt est créé au départ (s'il n'existe pas) par le programme, donc n'existe pas forcément au démarrage. Je l'ai mis sous C:\Panoramic mais on peut le mettre n'importe où (variable mf_fc$) | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Analyse/Mise en forme de sources Dim 13 Jan 2013 - 13:41 | |
| J'avoue que je ne comprend pas bien cette histoire d'espace. Mais j'ai également essayer de ne mettre que les noms de fichier (Ex: "PANORAMIC_EDITOR24i7.exe") et çà ne change rien. J'ai ce matin téléchargé beautifier (1) sur le site de Nardo et là çà fonctionne. (il faut dire que ce programme demande d'aller chercher les chemins par un OPEN_DIALOG) et çà fonctionne bien. Je ne pige pas et çà m'énerve A+ PS: On vient de se croiser JL35, je regarde | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Analyse/Mise en forme de sources Dim 13 Jan 2013 - 14:02 | |
| j'ai utilisé ton programme JL35 pour transformer les noms de répertoires - Code:
-
mf_Edipan$ = "C:\DOCUME~1\MOI\Bureau\PANORAMIC_EDITOR24i7.exe" : ' Editeur Panoramic mf_ResHacker$ = "C:\PROGRA~1\RESOUR~1\RESHAC~1.EXE"
Hé bien çà ne change rien j'ai également essayé ceci - Code:
-
mf_Edipan$ = "PANORAMIC_EDITOR24i7.exe" : ' Editeur Panoramic mf_ResHacker$ = "RESHAC~1.EXE"
c'est pas mieux | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Analyse/Mise en forme de sources Dim 13 Jan 2013 - 14:42 | |
| Là je ne comprends pas non plus Evidemment ce que tu as essayé en deuxième ne pouvait pas marcher, le chemin des exécutable est incomplet et on ne peut pas trouver les fichiers avec ça. Petite explication pour les espaces: EXECUTE (ou EXECUTE_WAIT) considère que le 1er argument (jusqu'au 1er espace) est le nom de l'exécutable, ce qui suit étant les paramètres à fournir à l'exécutable. Si tu écris: - Code:
-
EXECUTE_WAIT "C:\Program Files (x86)\Toto\Tata..." Panoramic cherche à exécuter le programme ' C:\Program', tout ce qui suit le 1er espace ('Files (x86)...) étant considéré comme des paramètres de l'exécutable C:\Program, qui évidemment n'existe pas ! Il faut donc remplacer le chemin de l'exécutable qui contient des espaces par un chemin qui n'en contient pas. Je rajoute de ce pas un s/p 'Nomcourt' qui est appelé systématiquement au départ pour convertir ces chemins; Mais je ne suis pas sûr que ton problème vienne de là... Edit voilà, c'est fait. Jean Claude, et si tu mets un 'stop' juste avant le END, est-ce que tu vas jusqu'au stop ? juste pour voir si l'erreur vient pendant la définitions des variables et objets, ou après, en cours d'exécution. Et si tu plantes avant le stop, déplacer celui-ci en arrière jusque avant l'erreur... PS c'est un peu curieux que ton Panoramic_Editorxxx.exe soit dans C:\Documents\... et non pas dans Program Files, mais bon, ça devrait marcher quand même. | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Analyse/Mise en forme de sources Dim 13 Jan 2013 - 14:57 | |
| Salut Jean Claude. Tu as écrit : "index off bound (5)" Ne serait-ce pas : List index out of bounds(5) ? Comme toi, je suis sous XP, mais ça n’a rien à voir. Avant d’adapter les répertoires j’obtenais l’erreur : List index out of bounds(5) Voici les lignes que j’ai modifiées selon ma configuration et ça marche : lignes 51 à 64 - Code:
-
IF DIR_EXISTS("D:\TEMP") = 0 THEN DIR_MAKE "D:\TEMP": ' Création du répertoire temporaire ' ===================== CI-DESSOUS: CHEMINS A ADAPTER ! ======================== ftmp$ = "D:\TEMP\ftmp.tmp" fexe$ = "D:\TEMP\Testx.bas" ff$ = "D:\TEMP\Fontfix.txt": ' liste des polices fixes fpt$ = "D:\TEMP\Fprn.txt": ' fichier d'impression éventuelle ' partie mise en forme: mf_fc$ = "D:\Panoramic\MclePano.txt": ' fichier des mots-clés Panoramic mf_fo$ = "D:\TEMP\Tmp.bas": ' fichier résultat, mots-clés en majuscules mf_fr$ = "D:\TEMP\RESULT.bas": ' fichier résultat, avec indentations mf_fl$ = "D:\TEMP\Tmp.txt" mf_fz$ = "D:\TEMP\ppp.res": ' fichier résultat de ResHacker mf_Edipan$ = "D:\PANORAMIC\PANORAMIC_EDITOR24i7.exe" : ' Editeur Panoramic mf_ResHacker$ = "D:\Resource_Hacker\ResHacker.exe"
ligne 278 - Code:
-
DIR_DIALOG 199, "D:\Panoramic"
ligne 702 - Code:
-
EXECUTE_WAIT "D:\Panoramic.exe " + fexe$
ligne 788 - Code:
-
DIR_CHANGE "d:\Panoramic\"
Essaye de revoir toutes ces lignes : c'est fort probable que l'erreur se trouve entre le clavier et ces lignes et non entre la chaise et le clavier! | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Analyse/Mise en forme de sources Dim 13 Jan 2013 - 15:06 | |
| Mon cher ami papydall, tu as sacrément raison et c'est une grossière erreur de ma part d'avoir mis des chemins 'en dur' dans le cours du programme !!! (mauvaise excuse: au départ ce n'était pas destiné à être diffusé).
Je rectifie tout ça vite fait, et Jean Claude, toutes mes excuses les plus plates, ton erreur (enfin, la mienne) vient très vraisemblablement de là. (pour la ligne 702, je l'ai inhibée, mais bon...) | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Analyse/Mise en forme de sources Dim 13 Jan 2013 - 15:22 | |
| Tu n'oublieras pas de te flageller JL35 pour avoir partager un fichier source qui ne soit pas parfait !! Non mais sans blague ... mais non, je déconne. Je reconnais bien là ton esprit taquin et le test dissimulé dans ton source pour remplacer avantageusement un sudoku ou autre casse tête qu'il t'aurait fallu coder sinon pour nous distraire... Bon aller, j’arrête le spam de ton sujet et je sorts
Dernière édition par Jicehel le Dim 13 Jan 2013 - 15:36, édité 2 fois | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Analyse/Mise en forme de sources Dim 13 Jan 2013 - 15:25 | |
| Jicehel, tu as percé à jour mes intentions secrètes... | |
| | | Contenu sponsorisé
| Sujet: Re: Analyse/Mise en forme de sources | |
| |
| | | | Analyse/Mise en forme de sources | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |