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
» Calculatrice
par papydall Hier à 22:45

» Orbites de l’ensemble de Mandelbrot
par Minibug Hier à 21:32

» Planétarium virtuel.
par Pedro Alvarez Hier à 17:07

» Demande pour Jack concernant PanExpress
par Minibug Hier à 11:04

» EPP_V01 éditeur pour Panoramic
par Minibug Mer 19 Sep 2018 - 21:03

» [RESOLU] Quelle ligne est sélectionnée dans SYNEDIT ?
par Jean Claude Mer 19 Sep 2018 - 21:02

» PanExpress : l'éditeur Panoramic avec création d'objet
par Minibug Mer 19 Sep 2018 - 15:58

» Petit coucou en passant !
par Minibug Dim 16 Sep 2018 - 15:03

» bug SEVERE fnc+sub : variables globales corrompus
par silverman Dim 16 Sep 2018 - 13:38

» Verrouiller un form en avant plan
par silverman Dim 16 Sep 2018 - 12:50

» Fin de l'aventure.
par Pedro Alvarez Sam 15 Sep 2018 - 18:16

» Demande d'explications Sur File_Write & File_writeln
par Jack Sam 15 Sep 2018 - 17:26

» MEMO avec des possibilités de commande
par Oscaribout Mer 12 Sep 2018 - 1:06

» La théorie du chaos
par jean_debord Mar 11 Sep 2018 - 9:30

» Version instantanée V 0.9.29i2 du 4/09/2018
par silverman Mer 5 Sep 2018 - 10:15

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Septembre 2018
LunMarMerJeuVenSamDim
     12
3456789
10111213141516
17181920212223
24252627282930
CalendrierCalendrier

Partagez | 
 

 Je sèche avec SUB

Aller en bas 
AuteurMessage
jimx78

avatar

Nombre de messages : 240
Age : 26
Localisation : Yvelines
Date d'inscription : 24/05/2010

MessageSujet: Je sèche avec SUB   Lun 15 Juin 2015 - 21:06

Salut tout le monde, j'aurais besoin d'aide svp:

J'aimerai crée une fonction qui me permet de traiter un string pour retourner un attribut et un etat :

Exemple:
si ma commande est "Position_X=78"
J'aimerai qu'il me renvoie sur 2 variables :
attribut$="Position_X"
etat$="78"

Voici mon code actuel :
Code:
dim commande$ , attribut$ , etat$

commande$="position_x    =  78"

lire_commande(commande$,attribut$,etat$)
print "R1."+commande$+"."
print "R2."+attribut$+"."
print "R3."+etat$+"."

end

sub lire_commande(commande$,attribut$,etat$)
if instr(commande$,"=") > 0
' dim_local commande$,attribut$,etat$
attribut$=trim$(mid$(commande$,1,instr(commande$,"=")-1))
etat$=trim$(mid$(commande$,instr(commande$,"=")+1,len(commande$)))
print "."+commande$+"."
print "."+attribut$+"."
print "."+etat$+"."
else
attribut$=-1
end_if
end_sub

J'aimerai que R2 et R3 me donne le résultat
Merci d'avance, je cherche depuis plusieurs jours, le plus important n'est pas (que) la réponse mais la logique pour que je comprenne mon erreur, merci ;D
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Invité
Invité



MessageSujet: Re: Je sèche avec SUB   Lun 15 Juin 2015 - 21:34

Personnellement j'utilise un tableau maintenant pour répondre à différents sub, pour le retour.
Ainsi: retour$(10,10) me permet pour 10 sortes de retours d'avoir 10 mémoires.
Code:
dim commande$ , attribut$ , etat$ , retour$(10,10)

commande$="position_x    =  78"

lire_commande(commande$,attribut$,etat$)
print "R1."+commande$+"."+ "."
print "R2."+retour$(1,0) + "."
print "R3."+retour$(1,1) + "."

end
=============================================
sub lire_commande(commande$,attribut$,etat$)
if instr(commande$,"=") > 0
   ' dim_local commande$,attribut$,etat$
   attribut$=trim$(mid$(commande$,1,instr(commande$,"=")-1))          : retour$(1,0)=attribut$
   etat$=trim$(mid$(commande$,instr(commande$,"=")+1,len(commande$))) : retour$(1,1)=etat$
   print "."+commande$+"."
   print "."+attribut$+"."
   print "."+etat$+"."
   print
else
   attribut$="-1"
end_if
end_sub

Je réserve un indice pour un problème particulier sur une sub, avec 10 (ou autre évidemment) mémoires. Il faut se rappeler qu'elle n° on a attribué à une sub, mais il y a papier-crayon (ou bloc-note).
Revenir en haut Aller en bas
Minibug

avatar

Nombre de messages : 3025
Age : 51
Localisation : Vienne (86)
Date d'inscription : 09/02/2012

MessageSujet: Re: Je sèche avec SUB   Lun 15 Juin 2015 - 21:36

Bonsoir Jimx78 !

Tu peux faire cela :

Code:
dim commande$ , attribut$ , etat$

commande$="position_x    =  78"

lire_commande(commande$)
print "R1."+commande$+"."
print "R2."+attribut$+"."
print "R3."+etat$+"."

end

sub lire_commande(c$)
  if instr(c$,"=") > 0
      ' dim_local commande$,attribut$,etat$
      attribut$=trim$(mid$(c$,1,instr(c$,"=")-1))
      etat$=trim$(mid$(c$,instr(c$,"=")+1,len(c$)))
      print "."+c$+"."
      print "."+attribut$+"."
      print "."+etat$+"."
  else
      attribut$=-1
  end_if
end_sub
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://gpp.panoramic.free.fr
Invité
Invité



MessageSujet: Re: Je sèche avec SUB   Lun 15 Juin 2015 - 21:40

En voyant la réponse de minibug, je constate que je n'ai pas compris la question.
Je pense en lisant rapidement que Minibug apporte la réponse. C'est de l'extraction de chaine.

affraid  Ca fait deux postes que je répond, et deux postes où je suis à côté de la plaque, comme quoi, l'idée de rester sur la touche, est une sage décision.
Revenir en haut Aller en bas
jimx78

avatar

Nombre de messages : 240
Age : 26
Localisation : Yvelines
Date d'inscription : 24/05/2010

MessageSujet: Re: Je sèche avec SUB   Lun 15 Juin 2015 - 22:04

ok merci pour vos réponse Very Happy

je me suis moyennement bien expliquer:

Dans le code de minibug
Code:
dim commande$ , attribut$ , etat$

commande$="position_x    =  78"

lire_commande(commande$)
print "R1."+commande$+"."
print "R2."+attribut$+"."
print "R3."+etat$+"."

end

sub lire_commande(c$)
  if instr(c$,"=") > 0
      ' dim_local commande$,attribut$,etat$
      attribut$=trim$(mid$(c$,1,instr(c$,"=")-1))
      etat$=trim$(mid$(c$,instr(c$,"=")+1,len(c$)))
      print "."+c$+"."
      print "."+attribut$+"."
      print "."+etat$+"."
  else
      attribut$=-1
  end_if
end_sub

On à c$ qui est une variable local je pense.
J'aimerai que attribut$ et etat$ sois aussi des variables local

Le but est de n'avoir aucune variable globale de crée dans le SUB. c$ répond au besoin mais attribut$ et etat$ sont des vrais variables.

Merci ^^
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Minibug

avatar

Nombre de messages : 3025
Age : 51
Localisation : Vienne (86)
Date d'inscription : 09/02/2012

MessageSujet: Re: Je sèche avec SUB   Lun 15 Juin 2015 - 22:12

@jimx78 :

A ma connaissance, il n'y a pas de récursivité (je crois que c'est comme ça que l'on dit) dans les subs.

Donc sans variables... Pas de résultats, sauf avec un PRINT sur l'écran.

Après tu peux charger le résultat de la sub dans un GRID ou un LIST et récupérer le résultat.
Mais cela reste un peu plus complexe et certainenment moins rapide drunken

@Cosmos70 :

T’inquiètes pas, ca nous arrive a tous. De plus je n'étais pas certain de répondre correctement a la demande.
D'ailleurs c'est le cas !! Wink
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://gpp.panoramic.free.fr
jimx78

avatar

Nombre de messages : 240
Age : 26
Localisation : Yvelines
Date d'inscription : 24/05/2010

MessageSujet: Re: Je sèche avec SUB   Lun 15 Juin 2015 - 22:22

Ca marche minibug, mais c'est surprenant car c$ fonctionne
Peut''être qu'il faut modifier la valeur de la variable par adr() ?

je crois que je viens de comprendre ton code cosmos70 !

Si je retire les variables attribut$ et etat$, et que j'utilise ton sytem de retour

J'ai fait ca plutot
retour$(1,0)=trim$(mid$(commande$,1,instr(commande$,"=")-1))
retour$(1,1)=trim$(mid$(commande$,instr(commande$,"=")+1,len(commande$)))
le problème c'est que j'ai une variable global retour$

Ceci reste intéressant !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Jicehel

avatar

Nombre de messages : 5929
Age : 46
Localisation : 77500
Date d'inscription : 18/04/2011

MessageSujet: Re: Je sèche avec SUB   Lun 15 Juin 2015 - 23:07

Tu es obligé d'avoir au moins une variable globale pour le retour.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Invité
Invité



MessageSujet: Re: Je sèche avec SUB   Lun 15 Juin 2015 - 23:16

Soit tu as une variable dédiée pour les sub, soit tu as par exemple un dlist où tu empiles tes variables, soit tu enregistre dans un fichier provisoir. Comme les fonctions n'existent pas, c'est ça ou rien.
Tu peux aussi comme je l'ai fait une fois, mais c'est le système du dlist, mettre le résultat provisoir dans un alpha visible ou lisible ou non. Si tu montres le contenue de ta variable quelque part comme dans un alpha, tu l'enregistre là, et tu peux la relire par caption$(alpha)
Revenir en haut Aller en bas
papydall

avatar

Nombre de messages : 5993
Age : 68
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

MessageSujet: Re: Je sèche avec SUB   Lun 15 Juin 2015 - 23:44

Petit rappel
Une SUB est une PROCEDURE et non une FONCTION.
Une fonction retourne SYSTEMATIQUEMENT un résultat.
Rien de systématique pour une SUB. Elle réalise un traitement quelconque.
Comme on ne dispose pas de fonction définie par l’utilisateur en panoramic, on a recours à l’emploi de SUB et on doit donc savoir comment la gérer.

Les paramètres transmis à une SUB sont transmis par VALEUR et sont considérés comme des variables locales (locale à la SUB).
Il ne faut pas les modifier au sein de la procédure.
Et même si on les modifie, cette modification n’aura aucun effet en dehors de la SUB.
N’oublions pas qu’il s’agit de variable LOCALE.
Elle n’existera plus en dehors de la SUB.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
Contenu sponsorisé




MessageSujet: Re: Je sèche avec SUB   

Revenir en haut Aller en bas
 
Je sèche avec SUB
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» j ai des souci , je debute depuis ce jour avec linux fedora
» Lecture video interrompue avec mise en tampon
» probleme avec les cellules d'excel sur la mise en forme
» [Résolu]Mis a jour impossible avec Antivir
» [Résolu] Problème avec psg tv

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: A l'aide!-
Sauter vers: