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
» Logiciel de planétarium.
mise en forme - Mise en forme de source Panoramic Emptypar Pedro Aujourd'hui à 10:37

» Un autre pense-bête...
mise en forme - Mise en forme de source Panoramic Emptypar Froggy One Jeu 21 Nov 2024 - 15:54

» Récupération du contenu d'une page html.
mise en forme - Mise en forme de source Panoramic Emptypar Pedro Sam 16 Nov 2024 - 14:04

» Décompilation
mise en forme - Mise en forme de source Panoramic Emptypar JL35 Mar 12 Nov 2024 - 19:57

» Un album photos comme du temps des grands-mères
mise en forme - Mise en forme de source Panoramic Emptypar jjn4 Mar 12 Nov 2024 - 17:23

» traitement d'une feuille excel
mise en forme - Mise en forme de source Panoramic Emptypar jjn4 Jeu 7 Nov 2024 - 3:52

» Aide-mémoire mensuel
mise en forme - Mise en forme de source Panoramic Emptypar jjn4 Lun 4 Nov 2024 - 18:56

» Des incomprèhension avec Timer
mise en forme - Mise en forme de source Panoramic Emptypar Klaus Mer 30 Oct 2024 - 18:26

» KGF_dll - nouvelles versions
mise en forme - Mise en forme de source Panoramic Emptypar Klaus Mar 29 Oct 2024 - 17:58

» instructions panoramic
mise en forme - Mise en forme de source Panoramic Emptypar maelilou Lun 28 Oct 2024 - 19:51

» Figures fractales
mise en forme - Mise en forme de source Panoramic Emptypar Marc Ven 25 Oct 2024 - 12:18

» Panoramic et Scanette
mise en forme - Mise en forme de source Panoramic Emptypar Yannick Mer 25 Sep 2024 - 22:16

» Editeur d étiquette avec QR évolutif
mise en forme - Mise en forme de source Panoramic Emptypar JL35 Lun 23 Sep 2024 - 22:40

» BUG QR Code DelphiZXingQRCode
mise en forme - Mise en forme de source Panoramic Emptypar Yannick Dim 22 Sep 2024 - 11:40

» fichier.exe
mise en forme - Mise en forme de source Panoramic Emptypar leclode Ven 20 Sep 2024 - 19:02

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Novembre 2024
LunMarMerJeuVenSamDim
    123
45678910
11121314151617
18192021222324
252627282930 
CalendrierCalendrier
-38%
Le deal à ne pas rater :
Ecran PC gaming 23,8″ – ACER KG241Y P3bip à 99,99€
99.99 € 159.99 €
Voir le deal

 

 Mise en forme de source Panoramic

Aller en bas 
AuteurMessage
JL35




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

mise en forme - Mise en forme de source Panoramic Empty
MessageSujet: Mise en forme de source Panoramic   mise en forme - Mise en forme de source Panoramic EmptyMar 15 Sep 2009 - 21:17

Pour ma part, j'aime bien dans un source avoir les mots de code du langage en majuscules, pour bien les distinguer du reste. Comme je les écris au départ en minuscules pour aller plus vite, voici un petit programme qui fait la conversion.

Remarques:
- les noms de fichier indiqués: fp$ = fichier source à mettre en forme, fc$ = fichier des mots-clé, fo$ = fichier résultat sont évidemment à changer en fonction des ressources et des besoins.

- le fichier fc$ des mots-clé Panoramic: MclePano.txt a été obtenu à partir de la liste du 'Manuel de Référence' Panoramic: http://pagesperso-orange.fr/panoramic-language/French/ , récupérée par copier/coller dans un fichier puis expurgée des commentaires, lettres seules et espaces (par programme évidemment).

- le programme est extrêmement long à l'exécution (près d'une minute pour le code ci-dessous).
Il manque cruellement une fonction Instr, ce qui oblige à faire appel à un sous-programme.
De plus, le fait que par exemple LEFT$(a$, 0) ou RIGHT$(a$, 0) ou MID$(a$, k, 0) partent en erreur au lieu de renvoyer une chaîne vide (comme en Basic) oblige à des tests acrobatiques pour éviter l'erreur
Pour la durée d'exécution, on se croirait revenu au vieux temps du Basic interprété des débuts.
Je ne conseillerais pas de lancer ce programme sur les derniers sources de Jean-Claude (CFP) !!!! à moins d'avoir quelques heures à perdre.
Pour info, j'ai codé à peu près la même chose dans un autre basic, et là ça va à la vitesse de l'éclair...

On pourrait faire quelque chose du même genre pour générer l'indentation automatique.

EDIT de minuit: allez, je rajoute le sous-programme Mcl qui constitue le fichier des mots-clé à partir du 'Manuel de référence'

Voici le code:
Code:
REM MefPano.bas Mise en majuscules des mots-clé d'un source Panoramic
DIM mcl$(500)
DIM fp$, fc$, fo$, fmc$, ncl, a$, s$, j, ls, k, k1, k2, u, um, ch$, trv, nbl
DIM pr$
LABEL Reb, Instr, Mcl, record

fp$ = "C:\Langages\Panorami\MefPano.bas": Rem fichier source à mettre en forme
fc$ = "C:\Langages\Panorami\MclePano.txt": Rem fichier des mots-clé Panoramic
fo$ = "C:\Temp\MefPano.bas": Rem fichier résultat, mis en forme
fmc$ = "Z:\mcl.txt": Rem fichier copié/collé depuis le 'Manuel de Référence'

IF FILE_EXISTS(fc$) = 0 THEN GOSUB Mcl: Rem création du fichier des mots-clé
ncl = 0: REM 352 mots-clé (09/09)
FILE_OPEN_READ 1,fc$
WHILE FILE_EOF(1) = 0
    ncl = ncl + 1: FILE_READLN 1, mcl$(ncl)
END_WHILE
FILE_CLOSE 1

FILE_OPEN_READ 1,fp$: nbl = 0
FILE_OPEN_WRITE 2, fo$
WHILE FILE_EOF(1) = 0
    FILE_READLN 1, a$: nbl = nbl + 1
    um = LEN(a$): s$ = "REM": ch$ = upper$(a$): u = 1: gosub Instr
    IF k>0 THEN um = k+3
    s$ = CHR$(34): ch$ = a$: u = 1 : REM pour ignorer les mots entre quotes
    GOSUB Instr: k1 = k
    IF k1 > 0
        u = k1+1: GOSUB Instr: k2 = k
    ELSE
        k1 = LEN(a$): k2 = 0
    END_IF
    FOR j = 1 TO ncl
        s$ = mcl$(j): ls = LEN(s$)
        u = 1
Reb:
        ch$ = UPPER$(a$): GOSUB Instr
        IF k > 0 AND k < um
            IF k < k1 OR k > k2
                IF k > 1
                    IF k = LEN(a$) - ls + 1
                        a$ = LEFT$(a$, k-1) + s$
                    ELSE
                        a$ = LEFT$(a$, k-1) + s$ + RIGHT$(a$, LEN(a$)-k-ls+1)
                    END_IF
                ELSE
                    IF LEN(a$) > ls
                        a$ = s$ + RIGHT$(a$, LEN(a$)-ls)
                    ELSE
                        a$ = s$
                    END_IF
                END_IF
                u = k+ls: GOTO Reb
            END_IF
        END_IF
    NEXT j
    FILE_WRITELN 2, a$
END_WHILE
FILE_CLOSE 1
FILE_CLOSE 2
PRINT "Terminé !"
TERMINATE

Instr:
REM recherche de la séquence s$ dans ch$, à partir de la position u
REM position rendue dans k (ou 0: non trouvé)
trv = 0
IF LEN(ch$) >= LEN(s$)
  FOR k = u TO LEN(ch$)-LEN(s$)+1
    IF MID$(ch$, k, LEN(s$)) = s$ THEN trv = k: EXIT_FOR
  NEXT k
END_IF
k = trv
RETURN

Mcl:
Rem Mise en forme du fichier des mots-clé de Panoramic, récupéré par
Rem copier/coller du Manuel de Référence dans Z:\mcl.txt, mis en forme
Rem dans C:\Langages\Panorami\MclePano.txt
FILE_OPEN_READ 1, fmc$
FILE_OPEN_WRITE 2, fc$
pr$ = ""
WHILE FILE_EOF(1) = 0: FILE_READLN 1, a$
    a$ = TRIM$(a$)
    IF LEN(a$) > 1
        IF LEFT$(a$, 9) = "IF C ELSE" THEN a$ = "ELSE": GOTO record
        IF LEFT$(a$, 9) = "(FOR V=S " THEN a$ = "STEP": GOTO record
        IF LEFT$(a$, 9) = "(FOR V=S)" THEN a$ = "TO": GOTO record
        ch$ = a$: s$ = " ": u = 1: GOSUB Instr: if k>0 THEN a$ = LEFT$(a$, k-1)
        ch$ = a$: s$ = "(": u = 1: GOSUB Instr: if k>0 THEN a$ = LEFT$(a$, k-1)
record:
        IF a$ <> pr$ THEN FILE_WRITELN 2, a$: pr$ = a$
    END_IF
END_WHILE
FILE_CLOSE 1: FILE_CLOSE 2
RETURN
Revenir en haut Aller en bas
 
Mise en forme de source Panoramic
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Mise en forme de fichier source Panoramic (nième version)
» Mise en forme de sources Panoramic (bis)
» Prg pour imprimer un source Panoramic.
» Analyse/Mise en forme de sources
» Autre tentative de mise en forme des nombres

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: