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.
Plugicielle pour Panoramic - Page 5 Emptypar Klaus Ven 17 Mai 2024 - 14:02

» item_index(résolu)
Plugicielle pour Panoramic - Page 5 Emptypar jjn4 Mar 14 Mai 2024 - 19:38

» Bataille terrestre
Plugicielle pour Panoramic - Page 5 Emptypar jjn4 Lun 13 Mai 2024 - 15:01

» SineCube
Plugicielle pour Panoramic - Page 5 Emptypar Marc Sam 11 Mai 2024 - 12:38

» Editeur EliP 6 : Le Tiny éditeur avec 25 onglets de travail
Plugicielle pour Panoramic - Page 5 Emptypar Marc Sam 11 Mai 2024 - 12:22

» Philharmusique
Plugicielle pour Panoramic - Page 5 Emptypar jjn4 Ven 10 Mai 2024 - 13:58

» PANORAMIC V 1
Plugicielle pour Panoramic - Page 5 Emptypar papydall Jeu 9 Mai 2024 - 3:22

» select intégrés [résolu]
Plugicielle pour Panoramic - Page 5 Emptypar jjn4 Mer 8 Mai 2024 - 17:00

» number_mouse_up
Plugicielle pour Panoramic - Page 5 Emptypar jjn4 Mer 8 Mai 2024 - 11:59

» Aide de PANORAMIC
Plugicielle pour Panoramic - Page 5 Emptypar jjn4 Mer 8 Mai 2024 - 11:16

» trop de fichiers en cours
Plugicielle pour Panoramic - Page 5 Emptypar lepetitmarocain Mer 8 Mai 2024 - 10:43

» Je teste PANORAMIC V 1 beta 1
Plugicielle pour Panoramic - Page 5 Emptypar papydall Mer 8 Mai 2024 - 4:17

» bouton dans autre form que 0(résolu)
Plugicielle pour Panoramic - Page 5 Emptypar leclode Lun 6 Mai 2024 - 13:59

» KGF_dll - nouvelles versions
Plugicielle pour Panoramic - Page 5 Emptypar Klaus Lun 6 Mai 2024 - 11:41

» @Jack
Plugicielle pour Panoramic - Page 5 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

 

 Plugicielle pour Panoramic

Aller en bas 
+2
papydall
Jean Claude
6 participants
Aller à la page : Précédent  1, 2, 3, 4, 5
AuteurMessage
Jicehel

Jicehel


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

Plugicielle pour Panoramic - Page 5 Empty
MessageSujet: Re: Plugicielle pour Panoramic   Plugicielle pour Panoramic - Page 5 EmptyLun 30 Avr 2012 - 11:17

Le 5 de ta boucle: for a%=1 to 5: print ... : next a%
Le 5, tu devrais le récupérer de ta commande dans une variable par exemple comme dans Nb_coord
=> Ca donnerait : for a%=1 to Nb_coord: print ... : next a%
Du coup la boucle marcherai qu'il y ait une chaine ou 500, mais bon il faudra quand même que le programmeur teste qu'il y a bien au moins une chaine, mais bon, il faut bien qu'il pense et qu'il bosse encore un peu, quand même Smile
Revenir en haut Aller en bas
Invité
Invité




Plugicielle pour Panoramic - Page 5 Empty
MessageSujet: Re: Plugicielle pour Panoramic   Plugicielle pour Panoramic - Page 5 EmptyLun 30 Avr 2012 - 13:43

Je ferais cela ce soir, à moins que tu t'y colles. Manque de temps.
Précision:
le memo du haut, c'est le programme tel qu'on l'imagine celui du milieu, c'est celui du haut modifié par ce programme.
celui du bas, des contrôles.
Citation :
tu veux faire trop de choses.
Non, j'essaye des idées. Je ferais ce dont j'ai besoin, et vu que c'est une partie en Panoramic, et lorsque la méthode sera bien compréhensible, par chacune, celui qui veut une commande, pourra rajouter un include, et le proposer, s'il le veut bien.
Revenir en haut Aller en bas
Jicehel

Jicehel


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

Plugicielle pour Panoramic - Page 5 Empty
MessageSujet: Re: Plugicielle pour Panoramic   Plugicielle pour Panoramic - Page 5 EmptyLun 30 Avr 2012 - 15:13

Non, Cosmos, je ne disais pas "tu fais trop de choses dans ce sens là", c'était pour la librairie de commandes, mais tu as répondu juste après que ce n'était pas encore la libraire telle que tu la concevait, mais un programme de test qui montre comment sera la librairie quand tu t'y attaqueras.
J'ai compris avec ta première réponse qu'en fait ce programme de test est la fusion de cette libraire est du programme qui montre ce que ça donne (le code source et le code transformé) Wink
Pour le moment, je préfères te laisser faire car je comprends à peu près où tu veux aller, mais pas dans les détails, c'est pour ça que je fais mes commentaires toujours de manière circonspectes, car parfois ça peut juste être par ce que je n'ai pas compris, mais c'est quand même de plus en plus clair et très prometteur.
Revenir en haut Aller en bas
Invité
Invité




Plugicielle pour Panoramic - Page 5 Empty
MessageSujet: Re: Plugicielle pour Panoramic   Plugicielle pour Panoramic - Page 5 EmptyLun 30 Avr 2012 - 19:18

Comme tu l'as demandé, j'ai rajouté :Nb_coord%.
Mais je ne pense pas que cet utilitaire soit fini. il faut voir avec une variable qui serait un séparateur, et la chaine écrite en toutes lettres.
Je fais aujourd'hui une pause. Il faut que je regarde pour mon programme d'accès direct, comme demande je ne sais plus Amboise je crois.
Je pensais qu'il y aurait des réponses sur la faisabilité avec Panoramic. Il faut croire que non.
Si c'est vraiment non, il faudra se repencher sur ce problème pour mettre quelque chose de plus simple. On s'est tous améliorés depuis 2009/2010. Bon je m'égare.
Revenir en haut Aller en bas
Invité
Invité




Plugicielle pour Panoramic - Page 5 Empty
MessageSujet: Re: Plugicielle pour Panoramic   Plugicielle pour Panoramic - Page 5 EmptyLun 21 Mai 2012 - 0:17

1ère modification 21 mai 2012 14h30
Seulement changer Définir par DEFINE. Le nom de l'include n'est pas changé pour l'instant: Définir.bas, car c'est une manoeuvre que vous devrez faire, selon que vous procédez par sauvegarde, ou suppression/sauvegarde ou rename. Le moment venu


Bon , il faut que j'intervienne avant que ce post soit fermé.
Je viens de déboger les commandes pour ajouter des fonctions ou autres.
Pour l'instant il n'est pas intégré au pluging.
Il y a le programme principal qui devra être repris ensuite pour l'intégrer. Pour la mise au point il y a deux memo, qui m'ont servi au débogage, c'est memo 42 et memo 43, en bas.

J'ai revu la conception des commandes. J'étais parti sur l'idée de faire 2 types de commandes avec IF_ devant et sans IF. Voir plus haut.
Ceci est annulé. On peut mettre plusieurs commandes dans la même ligne.

Voyons ce que cela donne en exemple:

Code:
dim chaine$, coord$(10) ,explode%,explode$,v_explode%,copie$,separ$,a%,Nb_coord%
chaine$ = "nom|prénom|adresse|téléphone"
  print "bonjour"  :  coord$ = @EXPLODE("|",chaine$)  :print "salut"  :  coord$ = @EXPLODE("|",chaine$)  : ' commentaire
MEMO 10 : @DEFINE{ 10 ,l80,t100,w300,h200,style size 12,"Courier New",yb,yi,y_,n/,[ec 255,0,0] ,[fc 0,100,255] }
for a%=1 to Nb_coord%:print coord$(a%):next a%

J'ai fait 2 commandes: @EXPLODE et @DEFINE
Da,s cette exemple, il y a deux commandes identiques dans la ligne 3, ce sont les deux mêmes par copier /coller, juste pour montrer ce que cela donne.

On peut pour la fonction @EXPLODE , mettre le séparateur, soit entre guillemet, soit dans une chaine, soit dans un tableau, et c'est pareil pour la chaine à découper.

J'ai découvert cette fonction, et je dois dire qu'elle est très intéressante pour nous, vu que la fonction INSTR() est incomplète, et que par le biais de la fonction @EXPLODE, on découpe directement la chaine, et on prend le nième du tableau généré.

Quand à @DEFINIR que demande Jicehel, (Je vois et j'avais oublié de rectifier: J'ai mis des parenthèse pour @EXPLODE, et il faudra que je mette des accolades.pour être dans le même principe.
J'ai choisi des accolades pour bien exclure la fonction, des autres instructions dans la même ligne. Ainsi si il y a TOP(10),, en recherchant la fin de l'instruction @DEFINE, cela aurait posé problème, à moins de regarder chaque caractère, pour trouver la séparation.
Dans définir, il y a aussi des crochets pour les fonctions couleurs.
Comment fonctionne cette instruction:
@DEFINE{n° objet ,...)
pour left, top, width, height, j'ai mis la première lettre de l'instruction. L'ordrre n'a pas d'importance, et tout est optionnel.
Ensuite si volonté, on marque "style", size, la fonte est directement entre-guillemet.
on vois par exemple: yb, ou nb pour yes BOLD, no BOLD, idem pour italic, siligné, c'est "_", barré c'est "/"
Pour les couleurs: entre-crochets: ec=encre-couleur, fc=fond-couleur.

cela donne le programme exécuté:
Code:

LABEL EXPLODE_1,EXPLODE_2
dim chaine$, coord$(10) ,explode%,explode$,v_explode%,copie$,separ$,a%,Nb_coord%
chaine$ = "nom|prénom|adresse|téléphone"
'  - [>coord$ = @EXPLODE("|",chaine$)  <] - [>coord$ = @EXPLODE("|",chaine$)  <]
print "bonjour"  :gosub EXPLODE_1:print "salut"  :gosub EXPLODE_2:' commentaire
'
MEMO 10 :LEFT 10 ,80:TOP 10 ,100:WIDTH 10 ,300:HEIGHT 10 ,200:FONT_SIZE 10 , 12:FONT_NAME 10 ,"Courier New":FONT_BOLD 10 :FONT_ITALIC 10 :FONT_UNDERLINE 10 :FONT_COLOR 10 , 255,0,0:COLOR 10 , 0,100,255
for a%=1 to Nb_coord%:print coord$(a%):next a%
' ------------          ------------          ------------          ------------         
END:' ======== FONCTION:    coord$ = @EXPLODE("|",chaine$)  ======= N°1 ligne:3
EXPLODE_1:
separ$= "|"
explode%=1:copie$=chaine$
if right$(copie$,1)<> separ$ then copie$ = copie$  +separ$
repeat
  v_explode%=instr(copie$, separ$ )
  if v_explode%>0 then coord$(explode%)=left$(copie$,v_explode%-1):copie$=mid$(copie$,v_explode%+1,len(copie$)):explode%=explode%+1
until v_explode%=0:Nb_coord%=explode%-1
RETURN
' ------------          ------------          ------------          ------------         
END:' ======== FONCTION:    coord$ = @EXPLODE("|",chaine$)  ======= N°2 ligne:3
EXPLODE_2:
separ$= "|"
explode%=1:copie$=chaine$
if right$(copie$,1)<> separ$ then copie$ = copie$  +separ$
repeat
  v_explode%=instr(copie$, separ$ )
  if v_explode%>0 then coord$(explode%)=left$(copie$,v_explode%-1):copie$=mid$(copie$,v_explode%+1,len(copie$)):explode%=explode%+1
until v_explode%=0:Nb_coord%=explode%-1
RETURN

Les fonctions sont remplacées par des gosub, pour comprendre la lecture du listing lors d'un débogage, lorsque c'est nécessaire (comme @EXPLODE), les appels de ces fonctions sont en commentaire.

Le programme principal:

Code:


 ' ************* PROGRAMME DE TRAVAIL POUR METTRE AU POINT LES COMMANDES à RAJOUTER ********************

 error_french
 Label SORTIE_INCLUDE:goto SORTIE_INCLUDE  :' permet de mettre tous les includes entre cette ligne et SORTIE_INCLUDE
 ' ==================  #INCLUDES  ===================
 #INCLUDE "C:\Panoramic-Init\INCLUDES\Explode.bas"
' à voir si vous changer le nom de l'include par: define.bas
 #INCLUDE "C:\Panoramic-Init\INCLUDES\definir.bas"

 ' ================== DÉCLARATIONS ===================
 SORTIE_INCLUDE:
 ' LABEL des INCLUDES
 label EXPLODE,DEFINE
 ' ------------------------------------------------------------------------------
 label traitement , fin ,selection , lire , err , sauve  ,full
 dim fichier$ , cde% ,edit$ , er$ ,h, a$,b$, a%,f$ ,b% ,b1$ , objet% ,a1$ , c%,c$, flag% ,coller$  ,full%
 top 0,00 :width 0,1200 :height 0,850
 ' ------------------------------------------------------------------------------
 dim n%              :' variables génériques de la fonction
 dim commande$      :' chaines contenant les mot-clés
 dim guil%          :' flag guillemet pour voir si on est à l'intérieur d'une chaine
 dim dept%          :' deux points, voir le début mot-clé et REM
 dim avant$          :' instruction sur la ligne précédente
 dim info$          :' visu des commandes de la ligne
 dim info%          :' 0=autorise l'ajout d'info sinon 1
 dim info_memoire$  :' garde l'info de la commande avant de savoir si info% = 0 au retour
 dim LABEL$          :' variable cumul de chaque label ajouté par commande
 dim nom_fonction$  :' nom du label ajouté à chaque commende
 dim numero_fonction%:' N° de la routine explode rajoutée (se rajoute à nom_fonction$
 dim flag_cde$      :' variable contenant un flag par ligne de 44 et validant le code ou non (si 1 pas une commande)
 dim numero$        :' récupère le numéro d'objet ou variable de l'objet (comme top 10 par exemple)
 dim non%            :' si 0: info$ montre la commande, si 1: ne montre pas

 ' ------------------------------------------------------------------------------
 ' DIM pour EXPLODE:
 dim pref$          :' préfixe de @EXPLODE  ce qui est avant
 dim trait$          :' traitement de la commande
 dim separ$          :' caractère de séparation
 dim ch$            :' la partie chaine d'explode

 ' les commandes s'ajoutent au fur et à mesure de leur création dans cette chaine, pour tester avec INSTR(, leur existance
 ' liste des commandes aoutées (limitées aux 5 premiers caractères)
 commande$="EXPLO DEFIN"
 '          123456789012345
 '          EXPLODE
 '          DEFINIR

 ' ensuite il suffira d'avoir un tableau de position dans cette chaine, pour trouver de suite la bonne
 ' position 1 pour EXPLO, position 7 pour DEFINIR


 memo 40 :width 40,500 :bar_horizontal 40 :hint 40,"[40]: programme de départ à décortiquer"

 ' exemple pour mise au point:    ' semblant de programme -- tel qu'il serait dans l'éditeur --
 item_add 40,"dim chaine$, coord$(10) ,explode%,explode$,v_explode%,copie$,separ$,a%,Nb_coord%"
 item_add 40,"chaine$ = "+chr$(34)+ "nom|prénom|adresse|téléphone"+chr$(34)
 item_add 40,"  print "+chr$(34)+"bonjour" +chr$(34)+"  :  "+  " coord$ = @EXPLODE("+chr$(34)+"|"+chr$(34)+",chaine$)  :print "+chr$(34)+"salut"+chr$(34)+" : ' commentaire"
 item_add 40,"MEMO 10: @DEFINE{ 10 ,l80,t100,w300,h200,style size 12,"+chr$(34)+"Courier New"+chr$(34)+",yb,yi,y_,n/,[ec 255,0,0] ,[fc 0,100,255] }"
 item_add 40,"for a%=1 to Nb_coord%:print coord$(a%):next a% "

 ' ---------------------------

 memo 41:width 41,1000:top 41,100 :height 41,100  :color 41,255,255,220  :bar_both 41:hint 41,"[41]: programme recomposée "

 memo 42:width 42,1000:top 42,435  :hint 42,"[42]: variables "
 memo 43:width 43,1000:top 43,540  :color 43,255,230,230 :height 43,140  :hint 43,"[43]: controle lignes...":bar_both 43
 memo 44:width 44,520:left 44,605 :color 44,235,245,245 :bar_horizontal 44:hint 44, "[44]: lignes décomposées par ':' "
 memo 46:width 46,1000:top 46,210  :height 46,215:color 46,240,240,0:hint 46,"[46]: subroutine à récupérer et ajoutée à 41"

 button 48:left 48,530:width 48,70:caption 48,"load"  :top 48, 0:height 48,20:on_click 48,lire
 button 45:left 45,500:width 45,40:caption 45,"GO"    :top 45,25:height 45,20:on_click 45,traitement
 button 47:left 47,540:width 47,50:caption 47,"quitte":top 47,50:height 47,20:on_click 47,fin
 button 50:left 50,550:width 50,50:caption 50,"save"  :top 50,75:height 50,20:on_click 50,sauve:hint 50,"Save prg recomposé"
 button 51:left 51,500:width 51,50:caption 51,"Grand" :top 50,25:height 51,20:on_click 51,full
 open_dialog 49
 on_click 40,traitement
 on_error_goto err
 END

 ' ==============================================================================
 selection:
 ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 ' mettre ici la position de la commande dans commande$
 ' "EXPLO DEFIN"
 '  1    7
 ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 select n%
    case 1 :  gosub EXPLODE
    case 7 :  gosub DEFINE
    end_select
return
' ------------------------------------------------------------------------------
err:
  message "erreur: ligne:"+ str$(error_line)+chr$(13)+ error_type$ +chr$(13)+a$
  message flag_cde$ +chr$(9)+b$
return
' ------------------------------------------------------------------------------
traitement:
  LABEL$ ="LABEL "
  off_click 40 :clear 41:clear 42:clear 43:clear 44 :clear 46 :numero_fonction% = 1
  for a%=1 to count(40)
      a$=item_read$(40,a%)
      n%= instr(a$,"@")    :' (ALT-graph à)
      ' si on trouve @, il se peut que ce soit: une commande ou un rem ou dans le contenu d'un texte
      if n%>0    :  ' ------ controle pour voir si commentaire avec ' et rem
          guil%=0  :c$="" : flag%=0
          flag_cde$="" :' flag à 0
          for b%=1 to len(a$)
              b$=mid$(a$,b%,1)
              if b$=chr$(34) then guil%=-1-guil%  :' si -1 on est dans les guillemets
              if b$ = "@" and guil% = -1 then flag%=1
              ' -----------------------------
              if left$(upper$(ltrim$(c$)),4) ="REM " and guil%=-1 then flag%=1
              if left$( ltrim$(c$),2)        = "' "  and guil%=-1 then flag%=1
              ' -------------------
              ' on ajoute chaque partie d'intercode de ligne dans 44 (ligne décomposée par ":"
              if b$=":" and guil%=0 and flag%=0
                  flag_cde$ = flag_cde$ +"0"
                  c$=c$+b$
                  c$=left$(c$,instr(c$,":")-1)
                  item_add 44,c$
                  c$="" : b$ =""
                  flag%=0
                  b$=ltrim$( mid$(a$,b%+1,len(a$)))
                  ' on regarde si une instruction est présente commencent par "@" sans expression avant "@"
                  if left$(b$,1) = "@" AND ( instr( commande$,mid$( upper$(b$),2,5) )  > 0 )
                      b$=  left$(b$, instr(b$,"}")) :b$=trim$(b$)
                      flag_cde$ = flag_cde$ +"0"
                      item_add 44,b$
                      repeat : b%=b%+1 : until mid$(a$,b%,1)="}"        :' on avance à la fin de la commande
                      repeat : b%=b%+1 : until b%>len(a$) or mid$(a$,b%,1)=":"
                      b$=""
                  end_if
              end_if
              if len(b$)=1 then c$ = ltrim$(c$)  +b$
          next b%

          if c$<>""
              item_add 44,c$
              flag_cde$ = flag_cde$ + "1"
          end_if


          ' DEUXIÊME PARTIE======================================================
          ' ----------------fin  de commentaire--------------
          rem "lire chaque item de 44, et voir ceux avec @ "
          info$="' ": avant$="":nom_fonction$="":info_memoire$="":info%=0
          ' ------------------------------------------------------------------
          if count(44)>0
              while count(44) > 0
                  a$ = item_read$(44,1)
                  if flag_cde$ <>"" then flag% = val(left$(flag_cde$,1))
                  if flag_cde$ <>"" then flag_cde$ = mid$(flag_cde$,2,len(flag_cde$))
                  item_delete 44,1
                  n%=instr(a$,"@")
                  if n%>0 and flag%=0
                      n%=instr(commande$,mid$( upper$(a$) ,n%+1,5) )
                      non%=0
                      if n%>0
                          if right$(rtrim$(a$),1)=":" then a$ = left$(rtrim$(a$),len(a$)-1)
                          ' liste des commandes à éviter de mettre des infos qui surcharge
                          if trim$( left$( upper$(a$),7)) = "@DEFINE" then non%=1 :info_memoire$="":' pour éviter de remontrer une commande dans info$
                          if non%=0 then info_memoire$=a$
                          gosub selection  :  ' traitement de la commande, selon la position n% dans commande$

                          ' si il y a eu un détour, et que nom_fonction$ <>"" alors il faut l'ajouter au label
                          ' ------------------------------------------------------------------
                          if nom_fonction$ <>""
                              if numero_fonction% = 1
                                  LABEL$=LABEL$+nom_fonction$
                              else
                                  LABEL$=LABEL$+","+nom_fonction$
                              end_if
                              numero_fonction%=numero_fonction%+1

                              if trim$(avant$)<>"" and RIGHT$(rtrim$(avant$),1) <> ":" then avant$=avant$  +":"
                              avant$=avant$ + "gosub " + nom_fonction$
                          else
                              if trim$(a$) <>"" then if right$(rtrim$(avant$),1)<>":" and trim$(avant$) <>"" then avant$=avant$ + ":"
                              avant$ = avant$ + a$
                          end_if
                          ' ------------------------------------------------------------------
                      end_if
                  else
                      if left$(trim$(a$),2) = "' " then non%=1  :info_memoire$=""
                      if left$(upper$(a$),4)= "REM " then non%=1:info_memoire$=""
                      if right$(rtrim$(avant$),1)<>":" and trim$(avant$) <>"" then avant$=avant$ + ":"
                      avant$=avant$+a$
                  end_if
                  ' ------------------------------------------------------------------
                  if non%=0 and info_memoire$ <>"" then info$= info$ + " - [>" + info_memoire$ + "<]":info_memoire$=""
              end_while
          end_if
          ' ------------------------------------------------------------------
          if info$<>"" then item_add 41,info$
          item_add 41,avant$
          ' ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      else                  :'  pas de caractère "©" dans la ligne
          item_add 41,a$
      end_if
  next a%

  ' on rajoute les lignes des sous-programmes.
  if numero_fonction% > 1
      item_insert 41,1, LABEL$  :' mettre au début la liste des nouvelles étiquettes
      if count(46) > 0
          for a%=1 to count(46)
              item_add 41,item_read$(46,a%)
          next a%
      end_if
  end_if
return
' ==============================================================================
lire:
  filter 49,"lecture programme à ajouter|*.bas"
  fichier$= file_name$(49)
  if fichier$ <> "_" then file_load 40,fichier$
return

sauve:
  filter 49,"sauvegarde du programme à recomposé|*.bas"
  fichier$= file_name$(49)
  if right$(fichier$,4) <> ".bas" then fichier$=fichier$ +".bas"
  if fichier$ <> "_" then file_save 41,fichier$
return
' ==============================================================================
full:
  full%=-1-full%
  if full% =-1 then full_space 43:hide 44:hide 46 : else:width 43,1000:height 43,140:top 43,540:show 44:show 46
return
fin:
  terminate



include @EXPLODE, et comme c'est pour aller avec le plugiciel, il faut faire un dossier INCLUDES dans "C:\Panoramic-Init, et le mettre dedans. (toute cette partie est en basic, si vous voulez mettre ailleurs, libre à vous, vous allez dans le programme.

Code:


' instruction EXPLODE, découpant une chaine selon un séparateur
"METHODE"
chaine$ = "nom|prénom|adresse|téléphone"
coord$ = @EXPLODE("|",chaine$)
        ou
coord$ = @EXPLODE(separ$,chaine$)
        ou
coord$ = @EXPLODE(separ$,"nom|prénom|adresse")
        ou
coord$ = @EXPLODE(s$(1),chaine$(10) )
les strings peuvent être chaines, variables, tableaux
"coord$" '  est en réalité un tableau de x éléments qu'il faut déclarer
résultat: coord$(1) => nom  coord$(2) => prénom  ; coord$(3) => adresse ......
le nombre trouvé est récupéré par la variable: NB_coord%, et commence à "UN"

REM "@@@@@@@@@ LE PROGRAMME @@@@@@@@@"
EXPLODE:
  n%=instr(upper$(a$),"@EXPLODE(" ) :' le teste sur cette commande était limité  (  >EXPLO< ) 5 caractères
  if n%>0
      pref$ = trim$(left$(a$,n%-1)) : if right$(pref$,1)= "=" then pref$=trim$(left$(pref$,len(pref$)-1))
      item_add 46,"' ------------          ------------          ------------          ------------          "
      item_add 46,"END:' ======== FONCTION:    "+a$+" ======= N°" + str$(numero_fonction%)+" ligne:"+str$(a%)
      trait$= trim$(mid$( a$,n%+9,len(a$)))
      separ$ = left$(trait$, instr(trait$,",")-1) :separ$=trim$(separ$)
      ch$= mid$(trait$, instr( trait$,",")+1,len(a$)) :ch$=trim$(ch$)
      if instr( ch$,":") >0 then  ch$= trim$( left$(  ch$ , instr(ch$,":") -1) )
      if RIGHT$( ch$,1)=")" then ch$= left$(ch$, len(ch$) -1)

      ' ---------------------------------------------------------------------------
      ' pour separ$, si dans trait$, avant la virgule, on a '$' alors variable, si c'est '"' alors il faut mettre separ$= ".."
      nom_fonction$="EXPLODE_"+str$(numero_fonction%)
      item_add 46,nom_fonction$+":"
      ' ---------------------------------------------------------------------------
      IF right$(separ$,1) = "$"
        item_add 46,"separ$ = " +separ$
      else
        if right$(separ$,1) = ")"
            item_add 46, "separ$= " +separ$
        else
            item_add 46, "separ$= " + chr$(34) + separ$  +chr$(34)
        end_if
      end_if

      item_add 46,"explode%=1:copie$=" + ch$
      item_add 46,"if right$(copie$,1)<> separ$ then copie$ = copie$  +separ$ "
      item_add 46,"repeat"
      item_add 46,"  v_explode%=instr(copie$, separ$ )"
      item_add 46,"  if v_explode%>0 then " + pref$  +"(explode%)=left$(copie$,v_explode%-1):copie$=mid$(copie$,v_explode%+1,len(copie$)):explode%=explode%+1"
      item_add 46,"until v_explode%=0:Nb_coord%=explode%-1"
      item_add 46,"RETURN"
  end_if
return
' ==============================================================================

INCLUDE @DEFINE:
Code:

' ==============================================================================

' prg INCLUDE pour définir les objets en une seule commande
' METHODE  exemple                                                              encre color    fond color
'  MEMO 1: @DEFINE{1,l100,t200,w500,h600,style size 12,"Courier New",yb,yi,y_,y/,[ec 255,0,0] ,[fc 0,0,255] }
' sert à définir en une seule commande, les caractéristiques d'un objet
commande: "@DEFINE{" + numéro objet, séparation par ","
t100 = top N,100
l200 = left N,200
W100 = width N,100
H200 = height N,200
style.........
size12 = font_size N,12
"Courier New" entre-guillemets la fonte sans rien préciser comme commande
yb =yes bold = font_bold N
nb =no  bold = font_bold_off N
yi = yes italic = font_italic N
ni = no italic  = font_italic_off N
y_ = yes souligne = font_underline N
n_ = no  souligne = font_underline_off N
y/ = yes barré    = font_strike N
n/ = no  barré    = font_strike N
les couleurs sont encadrées par [] pour englober les virgules
[ec 255,0,0]      = font_color N ,255,0,0
[fc 0,0,255]      = color N,0,0,255
fermeture de la commande par "}"
' toutes les commandes sont obtionnelles, seul style est ajouté pour l'ensemble des styles.

'  MEMO 1: @DEFINIR{1,l100,t200,w500,h600,style size 12,"Courier New",yb,yi,y_,y/,[ec 255,0,0] ,[fc 0,0,255] }
DEFINE:
  n%=instr(upper$(a$),"@DEFINE{" ) :' le teste sur cette commande était limité  (  >DEFIN< ) 5 caractères
  if n% > 0
      info_memoire$=""
      if n% > 1 then pref$ = left$(a$,n% -1) : a$ = mid$(a$,n%+9,len(a$))
      '  a$=@DEFINIR{1,l100,t200,w500,h600,[style si
      ' IL FAUT RECUPERER LE NUMERO
      numero$=trim$( mid$(a$,10,10)):numero$=left$(numero$, instr(numero$,",")-1)

      ' left
      n% = instr(upper$(a$),"L")
      if n%>0
        b$=mid$(a$,n%+1,10):b$=left$(b$,instr(b$,",")-1) :if right$(ltrim$(avant$),1) <> ":" then avant$=avant$+":"
        avant$ = avant$ + "LEFT "+numero$+","+b$
      end_if
      ' top
      n% = instr(upper$(a$),"T")
      if n%>0
        b$=mid$(a$,n%+1,10):b$=left$(b$,instr(b$,",")-1) :if right$(ltrim$(avant$),1) <> ":" then avant$=avant$+":"
        avant$ = avant$ + "TOP "+numero$+","+b$
      end_if
      ' width
          n% = instr(upper$(a$),"W")
      if n%>0
        b$=mid$(a$,n%+1,10):b$=left$(b$,instr(b$,",")-1) :if right$(ltrim$(avant$),1) <> ":" then avant$=avant$+":"
        avant$ = avant$ + "WIDTH "+numero$+","+b$
      end_if
      ' height
      n% = instr(upper$(a$),"H")
      if n%>0
        b$=mid$(a$,n%+1,10):b$=left$(b$,instr(b$,",")-1) :if right$(ltrim$(avant$),1) <> ":" then avant$=avant$+":"
        avant$ = avant$ + "HEIGHT "+numero$+","+b$
      end_if
      ' style -----------
      n% = instr(upper$(a$),"STYLE")
      if n%>0
        b$=mid$(a$,n%+5,len(a$))
        b$=left$(b$,instr(b$,"}")-1)
        if right$(ltrim$(avant$),1) <> ":" then avant$=avant$+":"
        a$=b$
      end_if
      ' size
      n% = instr(upper$(a$),"SIZE")
      if n%>0
        b$=mid$(a$,n%+4,10):b$=left$(b$,instr(b$,",")-1) :if right$(ltrim$(avant$),1) <> ":" then avant$=avant$+":"
        avant$ = avant$ + "FONT_SIZE "+numero$+","+b$
      end_if
      ' fonte_name
      n% = instr(upper$(a$),chr$(34))
      if n%>0
        b$=mid$(a$,n%+1,50)
        b$=left$(b$, instr(b$,chr$(34) ) -1)
        if right$(ltrim$(avant$),1) <> ":" then avant$=avant$+":"
        avant$ = avant$ + "FONT_NAME "+numero$+","+chr$(34)+b$+chr$(34)
      end_if
      ' bold nb
      n% = instr(upper$(a$),"YB")
      if n%>0
        if right$(ltrim$(avant$),1) <> ":" then avant$=avant$+":"
        avant$ = avant$ + "FONT_BOLD "+numero$
      end_if
      n% = instr(upper$(a$),"NB")
      if n%>0
        if right$(ltrim$(avant$),1) <> ":" then avant$=avant$+":"
        avant$ = avant$ + "FONT_BOLD_OFF "+numero$
      end_if
      ' italic ni
      n% = instr(upper$(a$),"YI")
      if n%>0
        if right$(ltrim$(avant$),1) <> ":" then avant$=avant$+":"
        avant$ = avant$ + "FONT_ITALIC "+numero$
      end_if
      n% = instr(upper$(a$),"NI")
      if n%>0
        if right$(ltrim$(avant$),1) <> ":" then avant$=avant$+":"
        avant$ = avant$ + "FONT_ITALIC_OFF "+numero$
      end_if
      ' souligné n_
      n% = instr(upper$(a$),"Y_")
      if n%>0
        if right$(ltrim$(avant$),1) <> ":" then avant$=avant$+":"
        avant$ = avant$ + "FONT_UNDERLINE "+numero$
      end_if
      n% = instr(upper$(a$),"N_")
      if n%>0
        if right$(ltrim$(avant$),1) <> ":" then avant$=avant$+":"
        avant$ = avant$ + "FONT_UNDERLINE_OFF "+numero$
      end_if
      ' barré n/
      n% = instr(upper$(a$),"Y/")
      if n%>0
        if right$(ltrim$(avant$),1) <> ":" then avant$=avant$+":"
        avant$ = avant$ + "FONT_STRIKE "+numero$
      end_if
      n% = instr(upper$(a$),"N_")
      if n%>0
        if right$(ltrim$(avant$),1) <> ":" then avant$=avant$+":"
        avant$ = avant$ + "FONT_STRIKE_OFF "+numero$
      end_if
      ' ,y/,[ec 255,0,0] ,[fc 0,0,255] }
      ' font_color : ec encre couleur
      n% = instr(upper$(a$),"[EC")
      if n%>0
        b$=mid$(a$,n%+3,30)
        b$=left$(b$,instr(b$,"]")-1)
        if right$(ltrim$(avant$),1) <> ":" then avant$=avant$+":"
        avant$ = avant$ + "FONT_COLOR "+numero$+","+b$
      end_if
      ' color      : fc fond couleur
      n% = instr(upper$(a$),"[FC")
      if n%>0
        b$=mid$(a$,n%+3,15):b$=left$(b$,instr(b$,"]")-1) :if right$(ltrim$(avant$),1) <> ":" then avant$=avant$+":"
        avant$ = avant$ + "COLOR "+numero$+","+b$
      end_if
      a$="":b$="":c$=""
  end_if
return

' ==============================================================================


J'ai volontairement fait pour chaque fonction identique, un sous programme, car cela permet de spécialiser. Ainsi, coordon$ =@explode("|",chaine$) ou
tr$="/": adr$ =@explode(re$,"Tartufe/Pierre/21000 Dijon")...

A vous de jouer! (je vois des fautes, je rectifirai plus tard.)


Dernière édition par cosmos70 le Lun 21 Mai 2012 - 14:34, édité 1 fois
Revenir en haut Aller en bas
Klaus

Klaus


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

Plugicielle pour Panoramic - Page 5 Empty
MessageSujet: Re: Plugicielle pour Panoramic   Plugicielle pour Panoramic - Page 5 EmptyLun 21 Mai 2012 - 0:26

Sans intervenir sur le fond, Cosmos70, j'ai juste une petite remarque.

Pour la cohérence, te ne ferais pas mieux d'utiliser des mots-clé, soit systématiquement en français, soit systématiquement en anglais ? EXPLODE est englais, DEFINIR est français. Ne m'en veux pas si j'ai loupé quelque chose.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Jicehel

Jicehel


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

Plugicielle pour Panoramic - Page 5 Empty
MessageSujet: Re: Plugicielle pour Panoramic   Plugicielle pour Panoramic - Page 5 EmptyLun 21 Mai 2012 - 1:24

Ca avance bien Cosmos Wink Sinon, je suis d'accord avec Klaus, comme c'est toi qui choisi ta syntaxe, autant tout mettre en anglais ou tout mettre en français Explode => EclateChaine ou au contraire Definir => Define
Revenir en haut Aller en bas
Invité
Invité




Plugicielle pour Panoramic - Page 5 Empty
MessageSujet: Re: Plugicielle pour Panoramic   Plugicielle pour Panoramic - Page 5 EmptyLun 21 Mai 2012 - 8:22

Bonjour,
Pour les mot-clés, je crois avoir demandé votre avis, car la-dessus, j'ai peut d'idée.
EXPLODE, c'est amboise qui en a parlé, et franchement je ne connais pas le mot français de remplacement. Pour DEFINIR, qu'est-ce que vous proposez? C'est vous qui parlez anglais.
Citation :
Sans intervenir sur le fond, Cosmos70, j'ai juste une petite remarque.
Pourquoi ne donnes-tu pas ton avis, contrairement à ce que tu crois, il m'intéresse, même si je dois prendre une claque. Je sais bien que le plugiciel, il ne va pas beaucoup servir une fois fini.
Revenir en haut Aller en bas
Invité
Invité




Plugicielle pour Panoramic - Page 5 Empty
MessageSujet: Re: Plugicielle pour Panoramic   Plugicielle pour Panoramic - Page 5 EmptyLun 21 Mai 2012 - 14:37

J'ai changé DEFINIR par DEFINE dans le poste plus haut.Il faut aussi que je regarde pour mettre des crochets à la place des parenthèses. Et c'est maintenant que j'ai envoyé que je le remarque.
Revenir en haut Aller en bas
Jicehel

Jicehel


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

Plugicielle pour Panoramic - Page 5 Empty
MessageSujet: Re: Plugicielle pour Panoramic   Plugicielle pour Panoramic - Page 5 EmptyLun 21 Mai 2012 - 14:59

Cool cosmos, du coup, on sera vigilent et on te traduira en anglais quand nécessaire si besoin Wink
Revenir en haut Aller en bas
Invité
Invité




Plugicielle pour Panoramic - Page 5 Empty
MessageSujet: Re: Plugicielle pour Panoramic   Plugicielle pour Panoramic - Page 5 EmptyLun 21 Mai 2012 - 18:33

Ok.
Seulement, est-ce que cela correspond à ce que tu attends?
Tu aurais vu cela comment?
Revenir en haut Aller en bas
Klaus

Klaus


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

Plugicielle pour Panoramic - Page 5 Empty
MessageSujet: Re: Plugicielle pour Panoramic   Plugicielle pour Panoramic - Page 5 EmptyLun 21 Mai 2012 - 19:39

Juste pour le plaisir: EXPLODE en français signifie EXPLOSER, mais peut-être plus judicieusement ECLATER.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Invité
Invité




Plugicielle pour Panoramic - Page 5 Empty
MessageSujet: Re: Plugicielle pour Panoramic   Plugicielle pour Panoramic - Page 5 EmptyVen 22 Juin 2012 - 0:59

Bonsoir.
J'interviens aujourd'hui, juste que cela fait un mois que je ne suis intervenu sur ce sujet, et que je ne voudrai pas qu'il soir fermé comme cela. Le travail est en suspend, car je suis sur un autre programme qui prend beaucoup plus de temps que prévu, vu que je l'ai repris à zéro, ayant constaté qu'il fallait programmer des choses identiques à chaque fois, alors qu'une autre idée pouvait l'éviter. En fait je fais un Galipédia.
Donc je fais un rappel pour éviter le blocage du sujet. Ce ne serait pas très propre de laisser le sujet ainsi. Si quelqu'un veut le prendre dans un an, ce ne sera pas évident de revoir le travail.

A ce propos, j'ai voulu faire une application pour le travail en cours, et je n'ai pas réussi. Déjà que lorsqu'il y a un problème de chargement sur une image, il ne donne pas le nom de celle-ci, de sorte que savoir sur toute une série d'images, laquelle est concernée? Ensuite une fois réussi, sans rien dire de plus, je n'ai pas l'icône Panoramic, et j'ai un icône DOS à la place. La question que je me pose, est de savoir si il y a une limite dans une application. La seconde question est la suivante. Si un exécutable est fait par exemle sur un disque virtuel, avec les fichiers inclus, dont le disque en question est la source, est-ce que cela fonctionne sur un autre ordi qui n'a pas ce disque d'installé?
Revenir en haut Aller en bas
Contenu sponsorisé





Plugicielle pour Panoramic - Page 5 Empty
MessageSujet: Re: Plugicielle pour Panoramic   Plugicielle pour Panoramic - Page 5 Empty

Revenir en haut Aller en bas
 
Plugicielle pour Panoramic
Revenir en haut 
Page 5 sur 5Aller à la page : Précédent  1, 2, 3, 4, 5
 Sujets similaires
-
» Pour les dix ans de PANORAMIC
» Logithèque : une base de données en Panoramic pour Panoramic
» Des DLL pour Panoramic
» POUR PANORAMIC
» pour panoramic

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: