FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  GroupesGroupes  Connexion  
Derniers sujets
» Synedit Parameters
par Yannick Aujourd'hui à 0:27

» Code à vérifier SVP (Oups ! résolu)
par Jean Claude Hier à 21:16

» Compilateur FBPano
par jean_debord Hier à 9:56

» Bienvenue à Virtualalan !
par UltraVox Hier à 9:18

» Concours de Morpions
par jjn4 Hier à 0:04

» ShortName$(F) [Cloturé]
par papydall Mer 21 Juin 2017 - 16:19

» Remplacer espace par tiret dans noms des dossiers / fichiers
par papydall Mer 21 Juin 2017 - 15:27

» Menu personalisé avec icones et menu contextuel
par Laurent (Minibug) Mer 21 Juin 2017 - 12:44

» La liste des choses à faire ...
par Jack Mar 20 Juin 2017 - 22:49

» Quoi de neuf à propos de Goric 3D ? (@Jack)
par UltraVox Mar 20 Juin 2017 - 21:06

» Nom court et anti fenetre dos
par silverman Mar 20 Juin 2017 - 18:31

» Ludothèque Panoramic
par jjn4 Mar 20 Juin 2017 - 18:09

» Proposition à la communauté
par Yannick Mar 20 Juin 2017 - 15:02

» >199
par maelilou Mar 20 Juin 2017 - 14:13

» NUMBER_FOCUS
par Yannick Lun 19 Juin 2017 - 15:25

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Juin 2017
LunMarMerJeuVenSamDim
   1234
567891011
12131415161718
19202122232425
2627282930  
CalendrierCalendrier

Partagez | 
 

 Analyse/Mise en forme de sources

Voir le sujet précédent Voir le sujet suivant Aller en bas 
Aller à la page : 1, 2  Suivant
AuteurMessage
JL35



Nombre de messages : 5882
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: Analyse/Mise en forme de sources   Ven 11 Jan 2013 - 19: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: http://panoramic.free-boards.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 - 18:14, édité 7 fois
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Jicehel

avatar

Nombre de messages : 5837
Age : 44
Localisation : 77500
Date d'inscription : 19/04/2011

MessageSujet: Re: Analyse/Mise en forme de sources   Ven 11 Jan 2013 - 19:52

Citation :
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 (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.

Je ne le crois pas, tu prépares directement ton bouclier et tu nous coupe directement l'herbe sous le pied avant que l'on te fasse plein de demandes fantaisites, même pas drôle !! Shocked Evil or Very Mad
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
JL35



Nombre de messages : 5882
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: Re: Analyse/Mise en forme de sources   Ven 11 Jan 2013 - 19: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 ? Very Happy

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.

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

avatar

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

MessageSujet: Re: Analyse/Mise en forme de sources   Sam 12 Jan 2013 - 2: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 OK

Deux 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.

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



Nombre de messages : 5882
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: Re: Analyse/Mise en forme de sources   Sam 12 Jan 2013 - 3:27

Merci pour ton regard papydall, je rentre seulement et je verrai tout ça demain... bonne nuit !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
papydall

avatar

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

MessageSujet: Re: Analyse/Mise en forme de sources   Sam 12 Jan 2013 - 4:02

Buonna Notte!
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
JL35



Nombre de messages : 5882
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: Re: Analyse/Mise en forme de sources   Sam 12 Jan 2013 - 13: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...
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
papydall

avatar

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

MessageSujet: Re: Analyse/Mise en forme de sources   Sam 12 Jan 2013 - 15: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+
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
JL35



Nombre de messages : 5882
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: Re: Analyse/Mise en forme de sources   Sam 12 Jan 2013 - 16: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.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Jean Claude

avatar

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

MessageSujet: Re: Analyse/Mise en forme de sources   Sam 12 Jan 2013 - 19:18

J'aurais bien aimé préparer une liste de truc pour améliorer le programme Smile

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 ! confused Evil or Very Mad Sad

Dès que j'envoi j'ai "index off bound (5)" et ensuite je peux cliquer dans le menu, NADA.... Evil or Very Mad

Qu'est-ce qui se passe t-il. Question

A+

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

avatar

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

MessageSujet: Re: Analyse/Mise en forme de sources   Sam 12 Jan 2013 - 19:26

Salut Jean Claude.

J’ai eu le même problème que toi ! sunny
Tu as certainement oublié d’adapter un certain répertoire (lignes 53 à 64 : probablement la ligne 63).
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
Jean Claude

avatar

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

MessageSujet: Re: Analyse/Mise en forme de sources   Sam 12 Jan 2013 - 19: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 confused

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



Nombre de messages : 5882
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: Re: Analyse/Mise en forme de sources   Sam 12 Jan 2013 - 20: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 Very Happy )
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.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
papydall

avatar

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

MessageSujet: Re: Analyse/Mise en forme de sources   Dim 13 Jan 2013 - 1: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.exe
Adapte 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é !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
Jean Claude

avatar

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

MessageSujet: Re: Analyse/Mise en forme de sources   Dim 13 Jan 2013 - 12: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 ???

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

avatar

Nombre de messages : 5837
Age : 44
Localisation : 77500
Date d'inscription : 19/04/2011

MessageSujet: Re: Analyse/Mise en forme de sources   Dim 13 Jan 2013 - 14:26

Vérifie que les programmes ne sont pas dans "C:\Program Files (x86)"
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Invité
Invité



MessageSujet: Re: Analyse/Mise en forme de sources   Dim 13 Jan 2013 - 14: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.
Revenir en haut Aller en bas
JL35



Nombre de messages : 5882
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: Re: Analyse/Mise en forme de sources   Dim 13 Jan 2013 - 15: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: http://panoramic.free-boards.net/t569-conversion-chemin-long-chemin-court-83?highlight=chemin+court

Panoramic_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$)
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Jean Claude

avatar

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

MessageSujet: Re: Analyse/Mise en forme de sources   Dim 13 Jan 2013 - 15: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 Very Happy

A+

PS: On vient de se croiser JL35, je regarde
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Jean Claude

avatar

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

MessageSujet: Re: Analyse/Mise en forme de sources   Dim 13 Jan 2013 - 16: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 confused
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
JL35



Nombre de messages : 5882
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: Re: Analyse/Mise en forme de sources   Dim 13 Jan 2013 - 16:42

Là je ne comprends pas non plus scratch
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.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
papydall

avatar

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

MessageSujet: Re: Analyse/Mise en forme de sources   Dim 13 Jan 2013 - 16: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!
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
JL35



Nombre de messages : 5882
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: Re: Analyse/Mise en forme de sources   Dim 13 Jan 2013 - 17: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...)
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Jicehel

avatar

Nombre de messages : 5837
Age : 44
Localisation : 77500
Date d'inscription : 19/04/2011

MessageSujet: Re: Analyse/Mise en forme de sources   Dim 13 Jan 2013 - 17:22

Tu n'oublieras pas de te flageller JL35 pour avoir partager un fichier source qui ne soit pas parfait !! Non mais sans blague ...
Very Happy 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 Wink


Dernière édition par Jicehel le Dim 13 Jan 2013 - 17:36, édité 2 fois
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
JL35



Nombre de messages : 5882
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: Re: Analyse/Mise en forme de sources   Dim 13 Jan 2013 - 17:25

Jicehel, tu as percé à jour mes intentions secrètes...
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Contenu sponsorisé




MessageSujet: Re: Analyse/Mise en forme de sources   

Revenir en haut Aller en bas
 
Analyse/Mise en forme de sources
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 2Aller à la page : 1, 2  Suivant
 Sujets similaires
-
» probleme avec les cellules d'excel sur la mise en forme
» [Résolu] une anime sous forme d'un arbre de recherche
» Cassy arrive en pleine forme pour vous dire bonjour<3
» Mise en forme des catégories
» Plus de mise en forme sur Firefox!

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