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
» Simuler l’appui de n’importe quelle touche.
par papydall Hier à 23:54

» Le Forum est en vacances.
par JL35 Hier à 21:20

» Une autre façon de terminer une application.
par JL35 Mar 22 Aoû 2017 - 14:27

» Compilateur FBPano
par Mike Lun 21 Aoû 2017 - 23:17

» Pb 20 (en analyse): plantage à l'appel d'un SUB
par Jack Lun 21 Aoû 2017 - 21:58

» Pb 19 (en analyse): libellé d'erreur dans des IF imbriqués
par Jack Lun 21 Aoû 2017 - 21:55

» Copier / coller du texte à partir de la fenêtre de commandes
par jean_debord Lun 21 Aoû 2017 - 9:46

» COMPILATEUR V 0.9 beta 8 du 18 aout 2017
par papydall Lun 21 Aoû 2017 - 5:01

» Mettre en windows en veille
par papydall Lun 21 Aoû 2017 - 4:15

» Stretch_on ne stretch plus...
par papydall Dim 20 Aoû 2017 - 15:22

» Pb 18 (en analyse): RESTORE_LABEL avec DATA à la fin
par Jack Dim 20 Aoû 2017 - 13:21

» Problème de traitement des opérateurs avec le compilateur.
par Pedro Alvarez Sam 19 Aoû 2017 - 20:01

» Pb 17 (résolu): ITEM_SELECT ne fonctionne pas
par Jack Jeu 17 Aoû 2017 - 19:26

» un nouveau editeur panobasic
par Jean Claude Jeu 17 Aoû 2017 - 10:18

» Le compilateur.
par Pedro Alvarez Jeu 17 Aoû 2017 - 8:36

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Août 2017
LunMarMerJeuVenSamDim
 123456
78910111213
14151617181920
21222324252627
28293031   
CalendrierCalendrier

Partagez | 
 

 Pour Klaus et Jack: création de fonctions inexistantes.

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
pan59

avatar

Nombre de messages : 367
Age : 60
Localisation : Wattignies
Date d'inscription : 16/10/2011

MessageSujet: Pour Klaus et Jack: création de fonctions inexistantes.   Jeu 5 Déc 2013 - 12:56

Bonjour.

Voici le code d'un petit programme sans prétention, permettant d'ajouter de nouvelles fonctions à Panoramic.

Ce code est facile à appréhender.

Qu'en pensez-vous ?

Merci de vos remarques éventuelles.

Code:
dim a$, b$, variable_retour$, fonction$, liste_argument$, resultat$, temporaire$, t$
dim argument$(10)
dim parametre
dim kk%, res%, true%, yy%

true%=1

label traiter_fonction

edit 100
left 100,-200
on_change 100,traiter_fonction

' Placer les arguments chaînes entre '' et non entre "".

text 100,"b$=TrimLeft$('-----Bonjour','-')"
message b$

text 100,"yy%=Instring('Bonjour','j',3)"
message str$(yy%)

text 100,"b$=Flip$('Bonjour')"
message b$

parametre=450
text 100,"yy%=Wrap(parametre)"
message str$(yy%)

end

traiter_fonction:

   t$=text$(100)
   if len(t$)>0
      t$=left$(t$,len(t$)-1)

      yy%=instr(t$,"=")
      variable_retour$=left$(t$,yy%-1)
      t$=mid$(t$,yy%+1,len(t$))

      yy%=instr(t$,"(")
      fonction$=left$(t$,yy%-1)
      liste_argument$=mid$(t$,yy%+1,len(t$))
  
      lire_arguments()
  
      traiter_fonction()
  
      enregistrer_resultat()
   end_if
  
return

sub lire_arguments()

    kk%=0
    while true%=1
        kk%=kk%+1
        yy%=instr(liste_argument$,",")
        if yy%=0
           argument$(kk%)=liste_argument$
              else
           argument$(kk%)=left$(liste_argument$,yy%-1)
        end_if
        
        if left$(argument$(kk%),1)="'" then argument$(kk%)=mid$(argument$(kk%),2,len(argument$(kk%))-2)

        ' Le parametre est la variable 'parametre'.
        if argument$(kk%)="parametre" then argument$(kk%)=str$(parametre)

        if yy%=0 then exit_while

        liste_argument$=mid$(liste_argument$,yy%+1,len(liste_argument$))
    end_while

end_sub

sub traiter_fonction()

    if fonction$="TrimLeft$"
       resultat$=argument$(1)

       while true%=1
             if left$(resultat$,1)<>argument$(2) then exit_while
             resultat$=mid$(resultat$,2,len(resultat$))
       end_while
    end_if

    if fonction$="Instring"
       res%=val(argument$(3))-1+instr(mid$(argument$(1),val(argument$(3)),len(argument$(1))),argument$(2))
       if res%<val(argument$(3)) then res%=0
    end_if
    
    if fonction$="Flip$"
       resultat$=""
       for kk%=len(argument$(1)) to 1 step -1
           resultat$=resultat$+mid$(argument$(1),kk%,1)
       next kk%
    end_if

    if fonction$="Wrap" then res%=wrap_value(val(argument$(1)))
    
end_sub

sub enregistrer_resultat()

    if variable_retour$="a$" then a$=resultat$
    if variable_retour$="b$" then b$=resultat$
    
    if variable_retour$="yy%" then yy%=res%
    
end_sub
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

Nombre de messages : 10062
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: Pour Klaus et Jack: création de fonctions inexistantes.   Jeu 5 Déc 2013 - 13:42

C'est une technique intéressante. Tu utlises l'évènement ON_CHANGE pour provoquer l'exécution de ce que l'on peut appeler un interpréteur, dont la structure est fournie par toi et dans lequel chacun peut accrocher l'implémentation de ses propres fonctions. Ces implémentations sont réalisées en Panoramic.

C'est une autre façon de faire ce qu'on peut faire avec les procédures. Plus souple sur certains aspects, mais également plus contraignant sur d'autres. En tout cas, une technique intéressante qu'il convient de garder dans la panoplie des solutions possibles !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
 
Pour Klaus et Jack: création de fonctions inexistantes.
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Creer un formulaire de Présentation pour Membres
» Creation Widget uniquement 15 couleurs pour le texte?
» création d' une image pour tagger
» Petite création d'un QEEL pour un tout nouveau forum !
» Création de base de POI avec tableur LibreOffice pour Garmin - csv, gpx, gpi… sur MAC

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: