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

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  MembresMembres  Connexion  
Derniers sujets
» Gestion d'un système client-serveur.
En attendant l'Arlésienne: bibliothèques de sous-programmes Emptypar Klaus Aujourd'hui à 1:15

» item_index(résolu)
En attendant l'Arlésienne: bibliothèques de sous-programmes Emptypar jjn4 Mar 14 Mai 2024 - 19:38

» Bataille terrestre
En attendant l'Arlésienne: bibliothèques de sous-programmes Emptypar jjn4 Lun 13 Mai 2024 - 15:01

» SineCube
En attendant l'Arlésienne: bibliothèques de sous-programmes Emptypar Marc Sam 11 Mai 2024 - 12:38

» Editeur EliP 6 : Le Tiny éditeur avec 25 onglets de travail
En attendant l'Arlésienne: bibliothèques de sous-programmes Emptypar Marc Sam 11 Mai 2024 - 12:22

» Philharmusique
En attendant l'Arlésienne: bibliothèques de sous-programmes Emptypar jjn4 Ven 10 Mai 2024 - 13:58

» PANORAMIC V 1
En attendant l'Arlésienne: bibliothèques de sous-programmes Emptypar papydall Jeu 9 Mai 2024 - 3:22

» select intégrés [résolu]
En attendant l'Arlésienne: bibliothèques de sous-programmes Emptypar jjn4 Mer 8 Mai 2024 - 17:00

» number_mouse_up
En attendant l'Arlésienne: bibliothèques de sous-programmes Emptypar jjn4 Mer 8 Mai 2024 - 11:59

» Aide de PANORAMIC
En attendant l'Arlésienne: bibliothèques de sous-programmes Emptypar jjn4 Mer 8 Mai 2024 - 11:16

» trop de fichiers en cours
En attendant l'Arlésienne: bibliothèques de sous-programmes Emptypar lepetitmarocain Mer 8 Mai 2024 - 10:43

» Je teste PANORAMIC V 1 beta 1
En attendant l'Arlésienne: bibliothèques de sous-programmes Emptypar papydall Mer 8 Mai 2024 - 4:17

» bouton dans autre form que 0(résolu)
En attendant l'Arlésienne: bibliothèques de sous-programmes Emptypar leclode Lun 6 Mai 2024 - 13:59

» KGF_dll - nouvelles versions
En attendant l'Arlésienne: bibliothèques de sous-programmes Emptypar Klaus Lun 6 Mai 2024 - 11:41

» @Jack
En attendant l'Arlésienne: bibliothèques de sous-programmes Emptypar Jack Mar 30 Avr 2024 - 20:40

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Mai 2024
LunMarMerJeuVenSamDim
  12345
6789101112
13141516171819
20212223242526
2728293031  
CalendrierCalendrier
-39%
Le deal à ne pas rater :
Pack Home Cinéma Magnat Monitor : Ampli DENON AVR-X2800H, Enceinte ...
1190 € 1950 €
Voir le deal

 

 En attendant l'Arlésienne: bibliothèques de sous-programmes

Aller en bas 
3 participants
AuteurMessage
JL35




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

En attendant l'Arlésienne: bibliothèques de sous-programmes Empty
MessageSujet: En attendant l'Arlésienne: bibliothèques de sous-programmes   En attendant l'Arlésienne: bibliothèques de sous-programmes EmptyMer 20 Juil 2011 - 17:41

J'ai ma solution à moi: des bibliothèques de sous-programmes, qui ne contiennent que ça.
Et j'ai un programme qui va les chercher pour les intégrer dans un programme principal, en gérant les DIM et les LABEL. En fait, ce programme intègre des variables et labels des sous-programmes inclus dans les déclarations DIM et LABEL du programme principal, puis intègre les sous-programmes eux-mêmes à la suite du programme.
Les contraintes (sinon ce serait trop facile !):
- les labels contenus dans les sous-programmes doivent être uniques et ne pas déjà figurer dans le programme principal
- les variables peuvent déjà exister, mais elles sont communes, avec ce que ça implique: les modifications se répercutent partout.
- les lignes DIM et LABEL doivent être seules sur leur ligne, pas de compactage avec d'autres instructions
(par exemple pas de DIM a$, b$, i%: i% = 10 sur la même ligne)
Donc, pas de variables locales.

Les bibliothèques figurent avec les sources Panoramic, avec le suffixe .bi
Chacune peut contenir un ou plusieurs sous-programmes et ne contiennent que ça, rassemblés par genre, par exemple.
Chacun des sous-programme a ses propres déclarations de DIM (toutes les variables utilisées) et LABELs éventuels, s'il y a des étiquettes internes au sous-programme.
Exemple d'une bibliothèque:
Code:
Bissex:
' rend bi = 1 si année bissextile
DIM bi, An
bi=0: IF (FRAC(An/4)=0 AND FRAC(An/100)>0) OR FRAC(An/400)=0 THEN bi=1
RETURN

Sousprog2:
DIM b$, c$, bi, i%, j%
LABEL Toto
... corps du s/P...
Toto:
.... suite ...
RETURN
Le rôle du programme d'insertion (IncSub) ci-dessous:
Après choix du programme principal, et des sous-programmes à insérer, analyse des déclarations de variables et labels, puis fusion avec les variables et labels des sous-programmes à insérer (en éliminant les redondances), puis ajout des sous-programmes à la fin du programme principal.
Dans l'exemple ci-dessus, le s/p Bissex se retrouvera sous la forme:
Code:
Bissex:
' rend bi = 1 si année bissextile
bi=0: IF (FRAC(An/4)=0 AND FRAC(An/100)>0) OR FRAC(An/400)=0 THEN bi=1
RETURN
la ligne DIM a disparu.
Il y a alerte si un label est en double, mais ce n'est pas forcément anormal, par exemple si un sous-programme en appelle un autre.
On peut visualiser le programme principal, les bibliothèques et sous-programmes, et le résultat obtenu.
Le programme résultant obtenu doit évidemment être exécutable sans autre modification.
Le programme d'insertion (un peu long, 400 lignes):
Code:
' IncSub.bas Insertion de sous-programme(s) dans un programme donné
DIM w0, h0, o, ls1, ls2, ls3, ls4, bt1, bt2, bt3, bt5, bt6, bt7, ed1
DIM f$, fd$, fo$, fr$, ft$, fsp$, sd$, a$, b$, sp$, la$, i%, j%, k%, k1%, v$
DIM var$(500), lab$(100), nva, nla, affic$, t$, fl$, rt$
DIM atp, atb, ats, ati
DIM vas$(200), las$(100), fsa$(20), nvs, nls, nsp, llab$, ldim$
LABEL Ajout, Suppr, Maj, Chbib, Exec, nxe, Vpro, Aide
LABEL Listvl, nvla, nvla1, nxwh, rra

' ====================== FICHIERS DE TRAVAIL, A AJUSTER ! ======================
rt$ = "Z:\": ' Répertoire de manoeuvre
fd$ = rt$ + "Dir"
ft$ = rt$ + "Tmp.bas"
sd$ = "C:\Langages\Panoramic\": ' répertoire des sources et bibliothèques Panoramic
' affic$ = "Notepad.exe "
affic$ = "C:\UTIL\Notepad2.exe "
' (sources: *.bas, bibliothèques de s/p: *.bi)
' ==============================================================================

w0 = 640: h0 = 900
WIDTH 0, w0: HEIGHT 0, h0: COLOR 0, 220,255,255
CAPTION 0, " - INSERTION DE SOUS-PROGRAMMES -"

o=1
LIST o: TOP o, 25: WIDTH o, 200: HEIGHT o, h0-90: ls1 = o
o=o+1: LIST o: TOP o, 25: LEFT o, 210: WIDTH o, 200: HEIGHT o, 150: ls2 = o
o=o+1: LIST o: TOP o, 220: LEFT o, 210: WIDTH o, 200: HEIGHT o, h0-260: ls3 = o
o=o+1: LIST o: TOP o, 25: LEFT o, 420: WIDTH o, 200: HEIGHT o, 400: ls4 = o
ON_CLICK ls1, Maj: ON_CLICK ls2, Chbib: ON_CLICK ls3, Ajout: ON_CLICK ls4, Suppr
o=o+1: BUTTON o: TOP o, 530: LEFT o, 450: WIDTH o, 150: HEIGHT o, 40: CAPTION o, "Exécuter": bt1 = o
o=o+1: BUTTON o: TOP o, 590: LEFT o, 470: WIDTH o, 100: CAPTION o, "Aide": bt5 = o
ON_CLICK bt1, Exec: ON_CLICK bt5, Aide
o=o+1: BUTTON o: TOP o, h0-64: LEFT o,0: WIDTH o, 200
CAPTION o, "Voir le programme": bt2 = o
o=o+1: BUTTON o: TOP o, 176: LEFT o,210: WIDTH o, 200
CAPTION o, "Voir la bibliothèque": bt6 = o
o=o+1: BUTTON o: TOP o, h0-64: LEFT o,210: WIDTH o, 200
CAPTION o, "Voir le sous-programme": bt3 = o
ON_CLICK bt2, Vpro: ON_CLICK bt3, Vpro: ON_CLICK bt6, Vpro
o=o+1: ALPHA o: TOP o, 430: LEFT o, 430: CAPTION o, "Fichier résultat:"
o=o+1: EDIT o: TOP o, 450: LEFT o, 420: WIDTH o, 200: ed1 = o
o=o+1: BUTTON o: TOP o, 470: LEFT o, 420: WIDTH o, 200
CAPTION o, "Voir le résultat": bt7 = o
ON_CLICK bt7, Vpro

FONT_SIZE 0, 10: FONT_BOLD 0
o=o+1: ALPHA o: TOP o,5: LEFT o, 20: atp = o
o=o+1: ALPHA o: TOP o,5: LEFT o, 240: atb = o
o=o+1: ALPHA o: TOP o, 202: LEFT o, 230: CAPTION o, " - Sous-Programmes -": ats = o
o=o+1: ALPHA o: TOP o, 5: LEFT o, 450: CAPTION o, " - S/P à insérer -": ati = o

EXECUTE_WAIT "Cmd.exe /c DIR " + sd$ + "*.bas /B >" + fd$: ' Sources
FILE_LOAD ls1, fd$
EXECUTE_WAIT "Cmd.exe /c DIR " + sd$ + "*.bi /B >" + fd$: ' Bibliothèques
FILE_LOAD ls2, fd$: FILE_DELETE fd$

CAPTION atp, "- Programmes ("+STR$(COUNT(ls1))+") -"
CAPTION atb, "- Bibliothèques ("+STR$(COUNT(ls2))+") -"
END
' =============================================================================

Chbib:
fsp$ = ITEM_INDEX$(ls2)
FILE_OPEN_READ 1, sd$ + fsp$
CLEAR ls3
WHILE FILE_EOF(1) = 0
    FILE_READLN 1, a$: a$ = RTRIM$(a$): k% = INSTR(a$, ":")
    IF k% > 0
        IF INSTR(a$, " ") < 1
            ' c'est une étiquette
            la$ = a$
            FILE_READLN 1, a$
            WHILE UPPER$(a$) <> "RETURN": FILE_READLN 1, a$: END_WHILE
            ITEM_ADD ls3, la$
        END_IF
    END_IF
END_WHILE
FILE_CLOSE 1
CAPTION ats, "- Sous-Programmes ("+STR$(COUNT(ls3))+") -"
RETURN

Ajout:
a$ = ITEM_INDEX$(ls3)
IF COUNT(ls4) > 0
    FOR i% = 1 TO COUNT(ls4)
        IF ITEM_READ$(ls4, i%) = a$ THEN RETURN
    NEXT i%
END_IF
ITEM_ADD ls4, a$: CAPTION ati, "- S/P à insérer ("+STR$(COUNT(ls4))+") -"
FONT_COLOR ed1, 0,0,0
RETURN

Suppr:
ITEM_DELETE ls4, ITEM_INDEX(ls4)
CAPTION ati, "- S/P à insérer ("+STR$(COUNT(ls4))+") -"
FONT_COLOR ed1, 0,0,0
RETURN

Maj:
a$ = ITEM_INDEX$(ls1): fr$ = rt$ + "_" + a$: TEXT ed1, fr$: FONT_COLOR ed1, 0,0,0
f$ = sd$ + a$: fl$ = fd$: t$ = "DIM": GOSUB Listvl: ' liste des variables déclarées
FILE_OPEN_READ 1, fl$: nva = 0
WHILE FILE_EOF(1) = 0
    FILE_READLN 1, a$: nva = nva + 1: var$(nva) = a$
END_WHILE
FILE_CLOSE 1
t$ = "LABEL": fl$ = fd$: GOSUB Listvl: ' liste des labels
FILE_OPEN_READ 1, fl$: nla = 0
WHILE FILE_EOF(1) = 0
    FILE_READLN 1, a$: nla = nla + 1: lab$(nla) = a$
END_WHILE
FILE_CLOSE 1: FILE_DELETE fl$
RETURN

Exec:
IF ITEM_INDEX(ls1) = 0 THEN MESSAGE "Sélectionner un programme": RETURN
IF COUNT(ls4) = 0 THEN MESSAGE "Aucun sous-programme sélectionné": RETURN
nsp = COUNT(ls4)
FOR j% = 1 TO nsp
    b$ = ITEM_READ$(ls4, j%): ' s/p cherché (label)
    fsa$(j%) = rt$ + LEFT$(b$, LEN(b$)-1)
    FILE_OPEN_WRITE 2, fsa$(j%)
    FILE_OPEN_READ 1, sd$ + ITEM_INDEX$(ls2): ' bibliothèque
    WHILE FILE_EOF(1) = 0: FILE_READLN 1, a$: a$ = TRIM$(a$)
        IF UPPER$(b$) = UPPER$(LEFT$(a$, LEN(b$)))
            WHILE UPPER$(LEFT$(a$, 6)) <> "RETURN"
                FILE_WRITELN 2, a$: FILE_READLN 1, a$
            END_WHILE
            FILE_WRITELN 2, a$: EXIT_WHILE
        END_IF
    END_WHILE
    FILE_CLOSE 1: FILE_CLOSE 2
NEXT j%
nvs = 0: nls = 0
FOR j% = 1 TO nsp
    f$ = fsa$(j%): fl$ = fd$: t$ = "DIM": GOSUB Listvl
    FILE_OPEN_READ 1, fl$
    WHILE FILE_EOF(1) = 0
        FILE_READLN 1, a$: nvs = nvs + 1: vas$(nvs) = a$
    END_WHILE
    FILE_CLOSE 1
    t$ = "LABEL": GOSUB Listvl
    FILE_OPEN_READ 1, fl$
    WHILE FILE_EOF(1) = 0
        FILE_READLN 1, a$: nls = nls + 1: las$(nls) = a$
    END_WHILE
    FILE_CLOSE 1
    a$ = MID$(fsa$(j%), 4, 50)
    FOR i% = 1 TO nls
        IF a$ = las$(i%) THEN EXIT_FOR
    NEXT i%
    IF i% > nls THEN nls = nls + 1: las$(nls) = a$
NEXT j%
FILE_DELETE fl$
FOR j% = 1 TO nvs
    nva = nva + 1: var$(nva) = vas$(j%)
NEXT j%
FOR j% = 1 TO nls
    nla = nla + 1: lab$(nla) = las$(j%)
NEXT j%
' vérification que les étiquettes sont uniques
FOR j% = 1 TO nla-1
  a$ = lab$(j%)
  FOR i% = j%+1 TO nla
      IF lab$(i%) = a$
          MESSAGE a$ + " : Label dupliqué (warning)"
      END_IF
  NEXT i%
NEXT j%
' éliminer les redondances de variables
FOR j% = 1 TO nva-1
  a$ = var$(j%)
  FOR i% = j%+1 TO nva
      IF var$(i%) = a$ THEN var$(i%) = ""
  NEXT i%
NEXT j%
' élimineer les redondances de labels
FOR j% = 1 TO nla-1
  a$ = lab$(j%)
  FOR i% = j%+1 TO nla
      IF lab$(i%) = a$ THEN lab$(i%) = ""
  NEXT i%
NEXT j%
llab$ = "LABEL ": ldim$ = "DIM "
k1% = 6
FOR j% = 1 TO nla
    a$ = lab$(j%)
    IF a$ <> ""
        IF k1%+LEN(a$) > 80
            llab$ = LEFT$(llab$, LEN(llab$)-1)+CHR$(13)+CHR$(10)
            llab$ = llab$ + "LABEL ": k1% = 6
        END_IF
        llab$ = llab$ + a$ + ",": k1% = k1% + LEN(a$) + 1
    END_IF
NEXT j%
llab$ = LEFT$(llab$, LEN(llab$)-1)
k1% = 4
FOR j% = 1 TO nva
    a$ = var$(j%)
    IF a$ <> ""
        IF k1%+LEN(a$) > 80
            ldim$ = LEFT$(ldim$, LEN(ldim$)-1)+CHR$(13)+CHR$(10)
            ldim$ = ldim$ + "DIM ": k1% = 4
        END_IF
        ldim$ = ldim$ + a$ + ",": k1% = k1% + LEN(a$) + 1
    END_IF
NEXT j%
ldim$ = LEFT$(ldim$, LEN(ldim$)-1)
f$ = sd$ + ITEM_INDEX$(ls1)
FILE_OPEN_READ 1, f$: FILE_OPEN_WRITE 2, fr$
FILE_READLN 1, a$: a$ = RTRIM$(a$)
WHILE LEFT$(LTRIM$(a$), 1) = "'"
    FILE_WRITELN 2, a$
    FILE_READLN 1, a$: a$ = RTRIM$(a$)
END_WHILE
FILE_WRITELN 2, llab$: ' labels
FILE_WRITELN 2, ldim$: ' dims
WHILE FILE_EOF(1) = 0
    FILE_READLN 1, a$: a$ = RTRIM$(a$)
rra:
    k% = INSTR(UPPER$(a$), "DIM ")
    IF k% = 0 THEN k% = INSTR(UPPER$(a$), "LABEL ")
    IF k% > 0
        IF k% = 1
            k% = INSTR(a$, ":")
            IF k% > 0
                a$ = MID$(a$, k%+1): GOTO rra
            END_IF
            GOTO nxe
        END_IF
        IF MID$(a$, k%-1, 1) = " "
            b$ = LEFT$(a$, k%-1)
            k% = INSTR(a$, ":")
            IF k% > 0
                a$ = b$ + MID$(a$, k%): GOTO rra
            END_IF
            GOTO nxe
        END_IF
    END_IF
    FILE_WRITELN 2, a$
nxe:
END_WHILE
FILE_CLOSE 1
' Ajout des sous-programmes
FOR j% = 1 TO nsp
    FILE_WRITELN 2, ""
    FILE_OPEN_READ 1, fsa$(j%)
    WHILE FILE_EOF(1) = 0
        FILE_READLN 1, a$
        b$ = TRIM$(a$)
        IF LEFT$(b$, 4) <> "DIM " AND LEFT$(b$, 6) <> "LABEL "
            FILE_WRITELN 2, a$
        END_IF
    END_WHILE
    FILE_CLOSE 1
NEXT j%
FILE_CLOSE 2
FONT_COLOR ed1, 255,0,0
RETURN

Vpro:
IF CLICKED(bt2) = 1
    IF ITEM_INDEX(ls1) = 0
        MESSAGE "Sélectionner un programme !": RETURN
    END_IF
    f$ = sd$ + ITEM_INDEX$(ls1): ' voir le fichier d'origine
ELSE
    IF CLICKED(bt7) = 1
        f$ = fr$: ' voir le fichier résultat
    ELSE
        IF CLICKED(bt6) = 1
            IF ITEM_INDEX(ls2) = 0
                MESSAGE "Sélectionner une bibliothèque !": RETURN
            END_IF
            f$ = sd$ + ITEM_INDEX$(ls2)
        ELSE
            IF CLICKED(bt7) = 1
                f$ = fr$
            ELSE
                IF ITEM_INDEX(ls3) = 0
                    MESSAGE "Sélectionner un sous-programme !": RETURN
                END_IF
                sp$ = ITEM_INDEX$(ls3): ' voir le sous-programme sélectionné
                FILE_OPEN_READ 1, sd$ + fsp$
                WHILE FILE_EOF(1) = 0
                    FILE_READLN 1, a$: a$ = RTRIM$(a$): k% = INSTR(a$, ":")
                    IF k% > 0
                        IF INSTR(a$, " ") < 1
                            ' c'est une étiquette
                            IF a$ = sp$
                                FILE_OPEN_WRITE 2, ft$: FILE_WRITELN 2, a$
                                FILE_READLN 1, a$
                                WHILE UPPER$(a$) <> "RETURN"
                                    FILE_READLN 1, a$: FILE_WRITELN 2, a$
                                END_WHILE
                                FILE_CLOSE 1: FILE_CLOSE 2: f$ = ft$: EXIT_WHILE
                            END_IF
                        END_IF
                    END_IF
                END_WHILE
            END_IF
        END_IF
    END_IF
END_IF
EXECUTE_WAIT affic$ + f$
IF FILE_EXISTS(ft$) = 1 THEN FILE_DELETE ft$
RETURN

Listvl:
' liste des variables (t$="DIM") ou labels (t$="LABEL") du source f$, dans fl$
FILE_OPEN_READ 1, f$: FILE_OPEN_WRITE 2, fl$
WHILE FILE_EOF(1) = 0
    FILE_READLN 1, a$: a$ = TRIM$(a$)
    k% = INSTR(a$, "'")
    IF k% > 0 THEN a$ = RTRIM$(LEFT$(a$, k% - 1))
    IF a$ = "" THEN GOTO nxwh
    k% = INSTR(a$, CHR$(34))
    IF k% > 0
        b$ = MID$(a$, k% + 1, 300)
        k% = INSTR(b$, CHR$(34))
        IF k% > 0 THEN a$ = LEFT$(a$, k%) + MID$(b$, k%, 300)
    END_IF
nvla:
    k% = INSTR(UPPER$(a$), t$ + " ")
    IF k% > 0
        IF k% > 1
            b$ = MID$(a$, k% - 1, 1)
            IF b$ <> ":" AND b$ <> " " AND b$ <> CHR$(9)
                a$ = MID$(a$, k% + 1, 300): GOTO nvla
            END_IF
        END_IF
        a$ = MID$(a$, k% + LEN(t$) + 1, 300)
nvla1:
        k% = INSTR(a$, ",")
        IF k% > 0
            FILE_WRITELN 2, TRIM$(LEFT$(a$, k% - 1))
            a$ = MID$(a$, k% + 1, 300): GOTO nvla1
        ELSE
            k% = INSTR(a$, ":")
            IF k% > 0
                FILE_WRITELN 2, TRIM$(LEFT$(a$, k% - 1))
                a$ = MID$(a$, k% + 1, 200): GOTO nvla
            ELSE
                FILE_WRITELN 2, TRIM$(a$)
            END_IF
        END_IF
    END_IF
nxwh:
END_WHILE
FILE_CLOSE 1: FILE_CLOSE 2
RETURN

Aide:
a$ = "    - INSERTION D'UN OU PLUSIEURS SOUS-PROGRAMMES DANS UN SOURCE -" + CHR$(10)
a$ = a$ + "      ============================================" + CHR$(10) + CHR$(10)
a$ = a$ + " PRINCIPE" + CHR$(10)
a$ = a$ + " ------------" + CHR$(10)
a$ = a$ + "Les sous-programmes sont contenus dans des 'bibliothèques', dans lesquelles ils sont" + CHR$(10)
a$ = a$ + "de la forme:" + CHR$(10)
a$ = a$ + CHR$(9)+"Etiquette:" + CHR$(10)
a$ = a$ + CHR$(9)+"DIM [variables internes au sous-programme]"+CHR$(10)
a$ = a$ + CHR$(9)+"LABEL éventuel (s'il y a des étiquettes internes au sous-programme)" + CHR$(10)
a$ = a$ + CHR$(9)+".... corps du sous-programme ..." + CHR$(10)
a$ = a$ + CHR$(9)+"RETURN" + CHR$(10)
a$ = a$ + " et ainsi de suite pour chacun des sous-programmes." + CHR$(10)
a$ = a$ + "Les bibliothèques se trouvent dans le même répertoire que les sources, sous forme" + CHR$(10)
a$ = a$ + "de fichiers sources au format Panoramic, de noms 'xxxxxxx.bi'." + CHR$(10)
a$ = a$ + "Ces fichiers sont créés sous éditeur Panoramic, mais ne sont pas exécutables tels quels."+ CHR$(10)
a$ = a$ + CHR$(10)
a$ = a$ + "Les sous-programmes sélectionnés seront ajoutés à la fin du programme source" + CHR$(10)
a$ = a$ + "d'origine, leurs variables et leurs labels étant insérés juste avant le 'END' du" + CHR$(10)
a$ = a$ + "programme. Il y a un contrôle pour éviter la duplication des noms de variables." + CHR$(10)
a$ = a$ + "Il peut donc y avoir des variables identiques d'un sous-programme à l'autre." + CHR$(10)
a$ = a$  + CHR$(10)
a$ = a$ + " INSERTION DES SOUS-PROGRAMMES" + CHR$(10)
a$ = a$ + " ---------------------------------------------" + CHR$(10)
a$ = a$ + "Le programme IncSub.bas (celui-ci) affiche:" + CHR$(10)
a$ = a$ + "- la liste des programmes sources .bas du répertoire." + CHR$(10)
a$ = a$ + "- la liste des bibliothèques, de la forme xxxxxx.bi." + CHR$(10)
a$ = a$ + "On clique le source à modifier dans la première colonne, puis la bibliothèque" + CHR$(10)
a$ = a$ + "contenant les sous-programmes désirés dans la deuxième colonne." + CHR$(10)
a$ = a$ + "Le programme affiche alors la liste des sous-programmes de cette bibliothèque." + CHR$(10)
a$ = a$ + "On clique dans cette liste le ou les sous-programmes à insérer, qui vont alors" + CHR$(10)
a$ = a$ + " s'afficher dans la dernière colonne (pour supprimer une sélection, cliquer sur"  + CHR$(10)
a$ = a$ + " son nom à droite)." + CHR$(10)
a$ = a$ + "Le nom du fichier résultat est dérivé du nom d'origine, pour ne pas détruire l'original," + CHR$(10)
a$ = a$ + "mais on peut le modifier à loisir (c'est un Edit)." + CHR$(10)
a$ = a$ + "Une fois tous les sous-programmes désirés sélectionnés, clic 'OK', ils seront alors" + CHR$(10)
a$ = a$ + "ajoutés au source d'origine pour former le fichier résultat, dont le nom s'affiche" + CHR$(10)
a$ = a$ + "en rouge une fois l'opération terminée." + CHR$(10)
a$ = a$  + CHR$(10)
a$ = a$ + "-> Le fichier résultat obtenu doit être exécutable tel quel." + CHR$(10)
a$ = a$  + CHR$(10)
a$ = a$ + " CONTROLES" + CHR$(10)
a$ = a$ + " ---------------" + CHR$(10)
a$ = a$ + "On peut visualiser (dans le Notepad):" + CHR$(10)
a$ = a$ + "- le source sélectionné ('Voir le programme')" + CHR$(10)
a$ = a$ + "- la bibliothèque sélectionnée ('Voir la bibliothèque')" + CHR$(10)
a$ = a$ + "- le sous-programme sélectionné ('Voir le sous-programme')" + CHR$(10)
a$ = a$ + "- le résultat obtenu ('Voir le résultat')" + CHR$(10)
a$ = a$  + CHR$(10)
a$ = a$ + " REMARQUES" + CHR$(10)
a$ = a$ + " ---------------" + CHR$(10)
a$ = a$ + "Il n'y a aucune contrainte de noms de variables dans les sous-programmes." + CHR$(10)
a$ = a$ + "Si ces noms sont en double ou plus, seule une occurence sera déclarée." + CHR$(10)
a$ = a$ + "Rappel pour l'exécution: toutes les variables sont communes dans le source Panoramic" + CHR$(10)
a$ = a$ + "'résultat', une modification d'une variable se répercute donc dans tout le programme." + CHR$(10)
a$ = a$ + "Par contre, les noms de sous-programmes et autres labels doivent impérativement" + CHR$(10)
a$ = a$ + "être uniques."
MESSAGE a$
RETURN

Revenir en haut Aller en bas
659_minifly




Nombre de messages : 590
Age : 75
Localisation : Valenciennes Nord
Date d'inscription : 29/04/2010

En attendant l'Arlésienne: bibliothèques de sous-programmes Empty
MessageSujet: Re: En attendant l'Arlésienne: bibliothèques de sous-programmes   En attendant l'Arlésienne: bibliothèques de sous-programmes EmptyMer 20 Juil 2011 - 18:10

@Jl35

Super JL ça a du bouillir Very Happy Very Happy
Revenir en haut Aller en bas
JL35




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

En attendant l'Arlésienne: bibliothèques de sous-programmes Empty
MessageSujet: Re: En attendant l'Arlésienne: bibliothèques de sous-programmes   En attendant l'Arlésienne: bibliothèques de sous-programmes EmptyMer 20 Juil 2011 - 18:49

Ben non, fastoche !
Revenir en haut Aller en bas
659_minifly




Nombre de messages : 590
Age : 75
Localisation : Valenciennes Nord
Date d'inscription : 29/04/2010

En attendant l'Arlésienne: bibliothèques de sous-programmes Empty
MessageSujet: Re: En attendant l'Arlésienne: bibliothèques de sous-programmes   En attendant l'Arlésienne: bibliothèques de sous-programmes EmptyMer 20 Juil 2011 - 18:57

Bravo JL35
Revenir en haut Aller en bas
Jicehel

Jicehel


Nombre de messages : 5947
Age : 51
Localisation : 77500
Date d'inscription : 18/04/2011

En attendant l'Arlésienne: bibliothèques de sous-programmes Empty
MessageSujet: Re: En attendant l'Arlésienne: bibliothèques de sous-programmes   En attendant l'Arlésienne: bibliothèques de sous-programmes EmptyJeu 21 Juil 2011 - 0:48

JL35, pourrais tu nous faire un zip avec tous les fichiers bi que tu utilises couramment ? Tu dois y avoir pleins de petites fonctions bien pratiques (du style de bissextile qui parait tout bête quand on la voit mais qui peut être une horreur à trouver tout seul, surtout sans notre grand ami Google ...).
Revenir en haut Aller en bas
JL35




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

En attendant l'Arlésienne: bibliothèques de sous-programmes Empty
MessageSujet: Re: En attendant l'Arlésienne: bibliothèques de sous-programmes   En attendant l'Arlésienne: bibliothèques de sous-programmes EmptyJeu 21 Juil 2011 - 14:55

Bon, je tâcherai de faire ça, mais c'est dispersé dans tous les coins, la notion de .bi est toute récente... alors, patience.

Edit:
quelques petites bibliothèques, prises un peu au hasard, il peut y avoir des erreurs minimes de déclarations par exemples, mais pas bien graves à priori.
Et il y a de petites adaptations à faire, en particulier pour les chemins de fichiers temporaires de manoeuvre.
http://www.2shared.com/file/yRj_0x78/Bib.html
J'ai ajouté un utilitaire: Volname.exe écrit dans un autre langage, appelé dans la bibliothèque Vol (noms des volumes montés).
Par contre je n'ai pas ajouté Text2Img appelé dans un autre sous-programme: écriture d'un texte dans une image bmp, qui est payant, pas cher, mais bon..., nécessaire seulement pour les tailles de polices supérieures à 30 (limitation Panoramic), au-dessous on peut utiliser un Picture.

Ce ne sont que des exemples, pour donner des idées éventuellement, il y en a plein d'autres dispersés un peu partout dans mes programmes, il faudrait que je fasse l'inventaire...

reEdit:
C'est à titre d'exemple, je mettrai une nouvelle version des subs, il y a quelques petites erreurs, notamment dans le SUB_date...

Voilà, c'est fait, j'ai rectifié quelques erreurs grossières et uploadé (quel vilain anglicisme) un nouveau zip.
Revenir en haut Aller en bas
Jicehel

Jicehel


Nombre de messages : 5947
Age : 51
Localisation : 77500
Date d'inscription : 18/04/2011

En attendant l'Arlésienne: bibliothèques de sous-programmes Empty
MessageSujet: Re: En attendant l'Arlésienne: bibliothèques de sous-programmes   En attendant l'Arlésienne: bibliothèques de sous-programmes EmptyVen 22 Juil 2011 - 0:04

Merci, étant en vacances, je n'ai pas le temps de fouiller, mais à mon retour, je mets ça en pratique Smile
Revenir en haut Aller en bas
Contenu sponsorisé





En attendant l'Arlésienne: bibliothèques de sous-programmes Empty
MessageSujet: Re: En attendant l'Arlésienne: bibliothèques de sous-programmes   En attendant l'Arlésienne: bibliothèques de sous-programmes Empty

Revenir en haut Aller en bas
 
En attendant l'Arlésienne: bibliothèques de sous-programmes
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Bibliothèques de sous-programmes (bis... ou ter)
» sous programmes
» Bibliothèque de sous-programmes
» sous-programmes et fonctions
» Labels et sous-programmes dans une variable ?

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