Aller au contenu

petit problème dans l\'analyse d\'une réponse


Messages recommandés

Posté(e)

Voici l'extrait de mon programme qui me pose un problème:

 

(princ "\nCorps d'état = ") (princ CES) (princ " :Valider, entrer une nouvelle valeur ou 'N' pour ne rien mettre ")

(setq CES (getstring ))

(if (= (strlen CES) 0) (setq CES rapCES) (setq rapCES CES))

(setq tex2 (strcat "AI="ARA" "CES))

(if (equal CES n) (steq tex2 (strcat "AI="ARA)))

(if (equal CES N) (steq tex2 (strcat "AI="ARA)))

 

Je voudrais lorsque l'on tape que N ou n (+entrée) en réponse la variable tex2 ne prenne que la valeur (strcat "AI="ARA).

Qu'est ce qui fait que ça ne marche pas mon truc?

Merci d'avance.

Dominique

Posté(e)

On dirait que, dans ton exemple, tex2 sera toujours égal à:

(setq tex2 (strcat "AI="ARA" "CES))

Puisque que cette ligne n'est dans aucune boucle conditionnelle et que d'autre part:

(equal CES n) est faux, il faut dire (equal CES "N"), je pense.

 

Tu devrais utiliser:

(initget "N")

(setq CES (getstring " :Valider, entrer une nouvelle valeur ou 'N' pour ne rien mettre "))

 

Tu es sur que tu veux dire (if (= (strlen CES) 0) et non (if (= (strlen CES) nil) ?

 

 

Bureau d'études dessin.

Spécialiste Escaliers

Développement - Formation

 

./__\.
(.°=°.)
Posté(e)

Ca y est, j'ai trouvé mon erreur, je cherchais dans tous les sens une erreur de syntaxe et en fait j'avais surtout une erreur d'orthographe, je suis nul :D

 

j'avais écrit:

(if (equal CES n) (steq tex2 (strcat "AI="ARA)))

 

il fallait:

(if (equal CES "n") ( setq tex2 (strcat "AI="ARA)))

 

Merci

Dominique

 

 

Posté(e)

Est-ce que tu n'utilises pas un débuggeur ?

VLISP, par exemple ?

Bureau d'études dessin.

Spécialiste Escaliers

Développement - Formation

 

./__\.
(.°=°.)
Posté(e)

Tu peux double-cliquer devant une parenthèse et taper Ctrl+Shift+E et ca bascule ton expression dans AutoCAD. Le résultat s'affiche dans la console de suivi.

 

Dans ton cas, tu testes:

(equal CES n)

 

S'il renvoie T (True)

alors, tu peux évaluer:

(steq tex2 (strcat "AI="ARA))

 

Vlisp offre des fonctions encore plus évoluées, pour suivre chaque évaluations pas à pas.

 

INDISPENSABLE

Bureau d'études dessin.

Spécialiste Escaliers

Développement - Formation

 

./__\.
(.°=°.)
Posté(e)

À ce propos, signalons que certains raccourcis clavier de l'éditeur Vlisp ne fonctionnent pas en version française. C'est par exemple le cas du raccourci CTRL+MAJ+], qu'il faut lancer par la commande correspondante du menu déroulant. Ce n'est pas très pratique, mais ce genre de problème arrive souvent dans les versions francisées des logiciels, et en particulier AutoCAD. L'exemple le plus frappant, est sans doute les problèmes de traduction qui ont affecté le mode de sélection « retirer » dans AutoCAD 2004. J'en avais d'ailleurs parlé sur CADxp.

Posté(e)

Merci pour les renseignements. Sinon pour répondre aux remarques précédentes:

(initget "N")

(setq CES (getstring " :Valider, entrer une nouvelle valeur ou 'N' pour ne rien mettre "))>

 

Je ne voulais pas utiliser cette solution car je voulais me donner donner la possibilité de pouvoir donner une réponse commançant par un N.

 

"Tu es sur que tu veux dire (if (= (strlen CES) 0) et non (if (= (strlen CES) nil) ?"

Pourquoi me poses tu cette question? Cette syntaxe fonctionne bien

mais comme je débute en lisp, (avant j'étais en LT et j'utilisais le diesel) tous vos conseils sont les bienvenus.

 

Dominique

 

Posté(e)

En fait, pour être simple, je ne dois pas être bien meilleur que toi !

(si tu me permets).

 

J'avoue que c'est difficile de comprendre la syntaxe et les buts des autres.

 

Il doit y avoir une histoire d'arase inférieure qqe part, ca c'est sur.

 

Je pratique beaucoup le initget, car il vérouille les possibilités de réponse et donc les échecs. Et puis souvent je fais le style AutoCAD.

 

(initget "Oui Non")

(setq rep (getstring "alors oui ou non ? : "))

(if (= rep nil)(setq rep "Oui"))

 

Tu peux répondre O ou N, ou Oui ou Non ou ENTREE, le initget permet de faire reconnaitre les majuscules automatiquement.

Bureau d'études dessin.

Spécialiste Escaliers

Développement - Formation

 

./__\.
(.°=°.)
Posté(e)

Bien sur, je voulais dire

 

(setq rep (getstring "alors oui ou non ? : "))

Bureau d'études dessin.

Spécialiste Escaliers

Développement - Formation

 

./__\.
(.°=°.)
Posté(e)

Décidemment,

 

Excusez-moi, ca doit être à cause du logiciel Opera, sur lequel la mise en gras se comporte bizzare...

 

(setq rep (getstring "alors oui ou non ? : "))

 

VOILA...ouf

Bureau d'études dessin.

Spécialiste Escaliers

Développement - Formation

 

./__\.
(.°=°.)
Posté(e)

ENFIN

 

(setq rep (getstring "alors oui ou non ? : "))

 

Et oui il faut, en principe, désactiver les BB codes pour voir le texte entre crochets que je veux réellement afficher sur ce sujet, merci Patrick.

(J'espère que ca marche, au cas, je le réécrit qd même;

(setq rep (getstring "alors oui ou non ? Oui[Oui entre les crochets à côté de la touche W] : "))

 

Il y a une réponse de Patrick dans le forum "Comment ca marche".

 

Et excusez le Tramber pour son obstination...

Bureau d'études dessin.

Spécialiste Escaliers

Développement - Formation

 

./__\.
(.°=°.)

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité