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
» Panoramic et ses curiosités
par Jean Claude Aujourd'hui à 8:48 pm

» Synedit Parameters
par Jean Claude Aujourd'hui à 8:15 pm

» Utilitaire de suppression de fichiers
par Jean Claude Aujourd'hui à 8:11 pm

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

» Compilateur FBPano
par jean_debord Hier à 8:56 am

» Bienvenue à Virtualalan !
par UltraVox Hier à 8:18 am

» Concours de Morpions
par jjn4 Mer 21 Juin 2017, 11:04 pm

» ShortName$(F) [Cloturé]
par papydall Mer 21 Juin 2017, 3:19 pm

» Remplacer espace par tiret dans noms des dossiers / fichiers
par papydall Mer 21 Juin 2017, 2:27 pm

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

» La liste des choses à faire ...
par Jack Mar 20 Juin 2017, 9:49 pm

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

» Nom court et anti fenetre dos
par silverman Mar 20 Juin 2017, 5:31 pm

» Ludothèque Panoramic
par jjn4 Mar 20 Juin 2017, 5:09 pm

» Proposition à la communauté
par Yannick Mar 20 Juin 2017, 2:02 pm

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 | 
 

 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 : 59
Localisation : Wattignies
Date d'inscription : 16/10/2011

MessageSujet: Pour Klaus et Jack: création de fonctions inexistantes.   Jeu 05 Déc 2013, 11:56 am

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 : 9969
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: Pour Klaus et Jack: création de fonctions inexistantes.   Jeu 05 Déc 2013, 12:42 pm

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: