CADxp: [Résolu] Retours de initget et getkword incohérents - CADxp

Aller au contenu

Page 1 sur 1
  • Vous ne pouvez pas commencer un sujet
  • Vous ne pouvez pas répondre à ce sujet

[Résolu] Retours de initget et getkword incohérents Incompatibilité avec les tirets bas ?

#1 L'utilisateur est hors-ligne   Aleck Ultimate 

  • ceinture noire 1er dan
  • Groupe : Membres
  • Messages : 749
  • Inscrit(e) : 18-novembre 16
  • LocationAlpes de Hautes Provences (04)

Posté 10 octobre 2018 - 10:45

Bonjour à tous.

Je me suis arraché les cheveux un bon moment avant de comprendre l'origine du problème.

Avec le code :

(initget "Parent Numero_dossier Etudes test_4 test_5") ;_ Choix de l'utilisateur
(setq chn_setq_getkword (getkword "Quel dossier ouvrire ? [Parent/Numero_dossier/Etudes/test_4/test_5]"))

Si je choisis "Parent" il me retourne "dossier"

Si je choisis "Numero_dossier" il me retourne "Etudes"

Si je choisis "Etudes" "Test_4" ou "Test_5" il me retourne une erreur si j'ai DYNMODE désactivé et "nil" si j'ai DYNMODE activé.

Par contre avec le même code sans les tirets bas.

(initget "Parent Numerodossier Etudes test4 test5") ;_ Choix de l'utilisateur
(setq chn_setq_getkword (getkword "Quel dossier ouvrir ? [Parent/Numerodossier/Etudes/test4/test5]"))

Tout marche normalement.

Je comprend pas pourquoi les tirets bas font tout buger. C'est normal ? Corrigible ? Explicable ?

Si c'est une contrainte tant-pis, mais je trouve que ça fait quand-même pas un outil très pratique alors que certains commande natives d'AutoCAD comportent même des espaces dans les noms de leurs options.

Merci.
En DAO, la passion me porte ! Le plus important n'est pas l'objectif mais je chemin parcourut pour l'atteindre.
C'est pourquoi il faut continuer à courir après les utopie même quant on se rend compte qu'elle sont inatteignables.

Utilisateur d'AutoCAD 2018 sous Windows 10
0

#2 L'utilisateur est hors-ligne   Fraid 

  • ceinture noire 3em dan
  • Groupe : Membres
  • Messages : 1816
  • Inscrit(e) : 08-août 05
  • LocationST Malo 35

Posté 10 octobre 2018 - 10:52

Bonjour,

A tu essayer avec un "\" devant ton "_" ?
...plus je sais où je suis, moin je sais où je vais.... Extrait d''une double interview simultanée d'une particule élémentaire.
0

#3 L'utilisateur est hors-ligne   Aleck Ultimate 

  • ceinture noire 1er dan
  • Groupe : Membres
  • Messages : 749
  • Inscrit(e) : 18-novembre 16
  • LocationAlpes de Hautes Provences (04)

Posté 10 octobre 2018 - 10:58

Citation

A tu essayer avec un "\" devant ton "_" ?

Effectivement non, mais le retour est le même chose avec ou sans "\".
En DAO, la passion me porte ! Le plus important n'est pas l'objectif mais je chemin parcourut pour l'atteindre.
C'est pourquoi il faut continuer à courir après les utopie même quant on se rend compte qu'elle sont inatteignables.

Utilisateur d'AutoCAD 2018 sous Windows 10
0

#4 L'utilisateur est hors-ligne   bonuscad 

  • ceinture rouge et blanche 8em dan
  • Groupe : Membres
  • Messages : 4566
  • Inscrit(e) : 20-juin 03

Posté 10 octobre 2018 - 13:02

Bonjour,
(initget) utilisé avec (getkword) a une syntaxe particulière permettant l'internationalisation du lisp.
En effet si on fait:
(initget "Bonjour Aurevoir _Hello Byebye")(getkword "\nJe dis [Bonjour/Aurevoir]?: ")
Si l'on renseigne "b", "B" (au minimum: la lettre ou les lettre en Majuscule définie-s) ou "bonjour" "Hello" est retourné.Si l'on renseigne "_h", "_H" ou plus, "Hello" est aussi retourné.Donc si initget rencontre un underscore dans ses paramètres, il considère que les mots suivants ( en nombre équivalent) sont en langue international et retournera ceux-ci et non ceux défini en Français.
Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
0

#5 L'utilisateur est hors-ligne   (gile) 

  • ceinture rouge et blanche 8em dan
  • Groupe : Moderateurs
  • Messages : 11036
  • Inscrit(e) : 02-septembre 05

Posté 10 octobre 2018 - 13:19

Salut,

Pour ajouter à ce qu'a dit bonuscad, dans le initget, on ne met que les "mots clé" à savoir un seul mot par "mot clé"; mais dans l'invite, on peut mettre des espaces et/ou des tirets bas. La valeur retournée par getkword est le "mot clé"
D'autre part, si on ne spécifie pas le bit 1 dans le initget (pour refuser que l'utilisateur fasse Entrée), il est préférable de spécifier une option par défaut.

(initget "Parent Numero Etudes 4 5")
(setq chn_setq_getkword (getkword "\nQuel dossier ouvrir [Parent/Numero dossier/Etudes/test 4/test 5] <Parent>: "))
(cond
  ((= chn_setq_getkword "Numero")
   (alert "Numero")
  )
  ((= chn_setq_getkword "Etudes")
   (alert "Etudes")
  )
  ((= chn_setq_getkword "4")
   (alert "4")
  )
  ((= chn_setq_getkword "5")
   (alert "5")
  )
  (T (alert "Parent"))
)

Gilles Chanteau - gileCAD -
Développements sur mesure pour AutoCAD
Image IPB
0

#6 L'utilisateur est hors-ligne   Aleck Ultimate 

  • ceinture noire 1er dan
  • Groupe : Membres
  • Messages : 749
  • Inscrit(e) : 18-novembre 16
  • LocationAlpes de Hautes Provences (04)

Posté 11 octobre 2018 - 05:57

Merci beaucoup. Comme quoi vaut mieux un qui sait (en l'occurrence deux) que moi qui cherche pendant des heures Image IPB
En DAO, la passion me porte ! Le plus important n'est pas l'objectif mais je chemin parcourut pour l'atteindre.
C'est pourquoi il faut continuer à courir après les utopie même quant on se rend compte qu'elle sont inatteignables.

Utilisateur d'AutoCAD 2018 sous Windows 10
0

#7 L'utilisateur est hors-ligne   lecrabe 

  • ceinture rouge et blanche 8em dan
  • Groupe : Moderateurs
  • Messages : 8029
  • Inscrit(e) : 10-décembre 03
  • LocationLoire (42)

Posté 11 octobre 2018 - 08:57

Hello

Waouh les 2 Vieux Grands Maitres Jedi (du Lisp/VLisp) Gilles et Bruno
ont pris sous leur ailes le Jeune Padawan Aleck !!

Bye, lecrabe
Autodesk Expert Elite Team
0

Partager ce sujet :


Page 1 sur 1
  • Vous ne pouvez pas commencer un sujet
  • Vous ne pouvez pas répondre à ce sujet

1 utilisateur(s) en train de lire ce sujet
0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)