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
» Button_picture
par pascal10000 Aujourd'hui à 11:41

» Pourquoi le compilateur stagne
par Minibug Aujourd'hui à 11:09

» 4 (en analyse): SYNEDIT_TARGET_IS_OBJECT devient inactif
par Jack Aujourd'hui à 10:09

» 3 (en analyse): Mauvaise interprétation du string "THEN"
par Jack Aujourd'hui à 10:03

» KGF.dll - demandes ou suggestions de modifications ou ajouts
par Marc Aujourd'hui à 10:00

» KGF_dll - nouvelles versions
par pascal10000 Hier à 17:27

» Mah-Jong européen new-look
par Minibug Mar 12 Déc 2017 - 22:31

» track_bar circulaire
par Klaus Mar 12 Déc 2017 - 13:54

» API Windows
par Klaus Mar 12 Déc 2017 - 3:21

» Cartes de voeux, menus, etc.
par JL35 Lun 11 Déc 2017 - 17:48

» a l'aide klaus
par Minibug Lun 11 Déc 2017 - 11:42

» bug SYNEDIT_TARGET_IS_OBJECT
par Jack Lun 11 Déc 2017 - 0:16

» Jukebox : Serge Reggiani
par papydall Sam 9 Déc 2017 - 5:58

» Ecouter la radio fm sur votre pc
par pascal10000 Sam 9 Déc 2017 - 3:42

» anomalie
par Klaus Sam 9 Déc 2017 - 3:21

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Décembre 2017
LunMarMerJeuVenSamDim
    123
45678910
11121314151617
18192021222324
25262728293031
CalendrierCalendrier

Partagez | 
 

 Je sèche avec SUB

Voir le sujet précédent Voir le sujet suivant 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 - 22: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 - 22: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 : 2412
Age : 51
Localisation : Vienne (86)
Date d'inscription : 10/02/2012

MessageSujet: Re: Je sèche avec SUB   Lun 15 Juin 2015 - 22: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 - 22: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 - 23: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 : 2412
Age : 51
Localisation : Vienne (86)
Date d'inscription : 10/02/2012

MessageSujet: Re: Je sèche avec SUB   Lun 15 Juin 2015 - 23: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 - 23: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 : 5863
Age : 45
Localisation : 77500
Date d'inscription : 19/04/2011

MessageSujet: Re: Je sèche avec SUB   Mar 16 Juin 2015 - 0: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   Mar 16 Juin 2015 - 0: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 : 5613
Age : 67
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

MessageSujet: Re: Je sèche avec SUB   Mar 16 Juin 2015 - 0: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
Voir le sujet précédent Voir le sujet suivant 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: