Dominique76 Posté(e) le 13 février 2004 Posté(e) le 13 février 2004 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
Tramber Posté(e) le 13 février 2004 Posté(e) le 13 février 2004 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 ./__\. (.°=°.)
Dominique76 Posté(e) le 13 février 2004 Auteur Posté(e) le 13 février 2004 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))) MerciDominique
Tramber Posté(e) le 13 février 2004 Posté(e) le 13 février 2004 Est-ce que tu n'utilises pas un débuggeur ?VLISP, par exemple ? Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
Dominique76 Posté(e) le 13 février 2004 Auteur Posté(e) le 13 février 2004 En fait, je me suis pas encore penché sur son utilisation. Je ne m'en sers que pour vérifier mes parenthèses.
Tramber Posté(e) le 13 février 2004 Posté(e) le 13 février 2004 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 ./__\. (.°=°.)
Invité Patrick Posté(e) le 13 février 2004 Posté(e) le 13 février 2004 À 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.
Dominique76 Posté(e) le 13 février 2004 Auteur Posté(e) le 13 février 2004 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 bienmais comme je débute en lisp, (avant j'étais en LT et j'utilisais le diesel) tous vos conseils sont les bienvenus. Dominique
Tramber Posté(e) le 14 février 2004 Posté(e) le 14 février 2004 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 ./__\. (.°=°.)
Tramber Posté(e) le 15 février 2004 Posté(e) le 15 février 2004 Bien sur, je voulais dire (setq rep (getstring "alors oui ou non ? : ")) Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
Tramber Posté(e) le 15 février 2004 Posté(e) le 15 février 2004 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 ./__\. (.°=°.)
Tramber Posté(e) le 15 février 2004 Posté(e) le 15 février 2004 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 ./__\. (.°=°.)
Messages recommandés
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 compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant