DenisHen Posté(e) le 5 avril 2018 Posté(e) le 5 avril 2018 Bonjour à tous. Voilà, dans une routine, je cherche à savoir si une variable (qui peut, par erreur, contenir une chaine) est bien strictement supérieur à 0. J'ai cherché et trouvé des trucs : (numberp, (null... Mais ça n'est pas suffisant. Et ma traditionnelle demande : Si quelqu'un a une astuce, un conseil... Je suis preneur... Windows 11 / AutoCAD 2024 Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net). Davantage d'avantages, avantagent davantage (Bobby Lapointe). La connaissance s'accroît quand on la partage (Socrate). Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)
Patrick_35 Posté(e) le 5 avril 2018 Posté(e) le 5 avril 2018 Salut Avec la fonction TYPEPar exemple(setq var1 0 var2 0.0 var3 "Test" ) (mapcar 'type (list var1 var2 var3)) @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
DenisHen Posté(e) le 5 avril 2018 Auteur Posté(e) le 5 avril 2018 Salut Patrick_35, et merci pour cette aide... C'est exactement ce que je cherchais... Windows 11 / AutoCAD 2024 Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net). Davantage d'avantages, avantagent davantage (Bobby Lapointe). La connaissance s'accroît quand on la partage (Socrate). Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)
Fraid Posté(e) le 5 avril 2018 Posté(e) le 5 avril 2018 Bonjour, pour connaitre le type d'une variable c'est type... en meme temps https://github.com/Fraiddd
DenisHen Posté(e) le 5 avril 2018 Auteur Posté(e) le 5 avril 2018 Re, Voilà, j'ai fais plusieurs tests, mais ça ne fonctionne pas, voici ma routine "test" :(defun c:testechelle ( / ech1) (setq ech1 200) (if (and (= (type ech1) INT) (> ech1 0)) ;_ Fin:and (princ "\nNombre strictement supérieur à 0") (princ "\nCe n'est pas un nombre ou inférieur ou égale à 0") ) ;_ Fin de if (princ) ) ;_ Fin de defun Windows 11 / AutoCAD 2024 Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net). Davantage d'avantages, avantagent davantage (Bobby Lapointe). La connaissance s'accroît quand on la partage (Socrate). Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)
Patrick_35 Posté(e) le 5 avril 2018 Posté(e) le 5 avril 2018 Il manque un quote (defun c:testechelle ( / ech1) (setq ech1 200) (if (and (= (type ech1) 'INT) (> ech1 0)) ;_ Fin:and (princ "\nNombre strictement supérieur à 0") (princ "\nCe n'est pas un nombre ou inférieur ou égale à 0") ) ;_ Fin de if (princ) ) ;_ Fin de defun @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
DenisHen Posté(e) le 5 avril 2018 Auteur Posté(e) le 5 avril 2018 Merci Patrick_35... Mais j'ai du oublié une petite précision, le retour de cette variable est toujours sous forme de chaine, qui devrait contenir un nombre strictement supérieur à 0 (si l'utilisateur ne se trompe pas). En fait, ech1 peut être "200", "gfsdg",... J'aimerais tester si sont "contenu" est bien un nombre strictement supérieur à 0. C'est en regardant ton dernier code et en le testant que je me suis aperçu du manque d'information dans mon premier post... Désolé... Windows 11 / AutoCAD 2024 Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net). Davantage d'avantages, avantagent davantage (Bobby Lapointe). La connaissance s'accroît quand on la partage (Socrate). Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)
didier Posté(e) le 5 avril 2018 Posté(e) le 5 avril 2018 Coucou Auto-promo : Explications Tu ne lis pas ce qu'on te propose... grrr, je me demande pour qui je fais ça. Amicalement tout de même Edit : j'en ai profité pour mettre la page à jour pour éviter l'hésitation des futurs lecteurs Éternel débutant... Mon site perso : Programmer dans AutoCAD
Patrick_35 Posté(e) le 5 avril 2018 Posté(e) le 5 avril 2018 Alors la fonction READ est ton amie Par exemple(mapcar 'type (list (read "123") (read "123.456") (read "Test"))) @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
VDH-Bruno Posté(e) le 5 avril 2018 Posté(e) le 5 avril 2018 J'ai cherché et trouvé des trucs : (numberp, (null... Mais ça n'est pas suffisant. Bonjour, Préfère numberp à type dans tes conditions, si tu ne veux pas te limiter aux nombres entiers.. Apprendre => Prendre => Rendre
DenisHen Posté(e) le 5 avril 2018 Auteur Posté(e) le 5 avril 2018 Tu ne lis pas ce qu'on te propose... grrr, je me demande pour qui je fais ça.Ben si (enfin je pense), j'ai bien lu et compris que seul (type ne suffisait pas, et je ne savais absolument pas où chercher ce qui me manquait... Alors la fonction READ est ton amieBINGO ! ! C'est ça, et mon code est maintenant bon... Préfère numberp à type dans tes conditions, si tu ne veux pas te limiter aux nombres entiers.. Merci Bruno, mais je cherche une échelle, donc, uniquement un integer... Encore merci à tous... Windows 11 / AutoCAD 2024 Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net). Davantage d'avantages, avantagent davantage (Bobby Lapointe). La connaissance s'accroît quand on la partage (Socrate). Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)
(gile) Posté(e) le 5 avril 2018 Posté(e) le 5 avril 2018 Salut, Il faut essayer d'être le plus précis possible dans l'énoncé de ce qu'on cherche à faire. Quand on y arrive, le boulot est quasiment fait, il suffit juste de traduire en LISP. je cherche à savoir si une variable (qui peut, par erreur, contenir une chaine) est bien strictement supérieur à 0. Finalement, il s'avère que la variable est toujours une chaîne qui peut représenter un nombre, ou pas. Mais on ne sait toujours pas précisément si ce nombre doit être un nombre entier ou peut être un nombre réel. Autrement dit, est-ce que tu veux :"évaluer si le contenu d'une chaîne de caractère représente un nombre strictement positif"ou"évaluer si le contenu d'une chaîne de caractère représente un nombre entier strictement positif" ou autre chose ? Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
DenisHen Posté(e) le 5 avril 2018 Auteur Posté(e) le 5 avril 2018 Salut (gile). Oui, tu as raison et je m'en excuse, je n'ai pas été assez claire dans mon premier post... Je demande à l'utilisateur de saisir une échelle (juste le dénominateur) dans ta fonction "InputBox". C'est seulement après que j'ai percuté que le retour était toujours sous forme de chaine... D'où ma précision dans le message 7, je m'excuse encore pour cet oubli... Windows 11 / AutoCAD 2024 Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net). Davantage d'avantages, avantagent davantage (Bobby Lapointe). La connaissance s'accroît quand on la partage (Socrate). Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)
didier Posté(e) le 5 avril 2018 Posté(e) le 5 avril 2018 Coucou BIEN (se) poser la question est très souvent une grande partie de la réponse Amicalement Éternel débutant... Mon site perso : Programmer dans AutoCAD
VDH-Bruno Posté(e) le 5 avril 2018 Posté(e) le 5 avril 2018 Merci Patrick_35... Mais j'ai du oublié une petite précision, le retour de cette variable est toujours sous forme de chaine, qui devrait contenir un nombre strictement supérieur à 0 (si l'utilisateur ne se trompe pas). En fait, ech1 peut être "200", "gfsdg",... J'aimerais tester si sont "contenu" est bien un nombre strictement supérieur à 0. C'est en regardant ton dernier code et en le testant que je me suis aperçu du manque d'information dans mon premier post... Désolé... Salut Dans ce cas regarde le post de (gile) sur les expressions régulièreshttp://cadxp.com/topic/45447-les-expressions-regulieres/page__view__findpost__p__263444 ;; Test pour une chaire représentant un nombre réel positif(RegExpTest varreelpositif "^\\d+(\\.\\d+)?$" T) ;; Test pour une chaire représentant un nombre entier positif(RegExpTest varintpositif "^\\d+?$" T) (ps: pas une le temps de regarder pour compléter l'expression et filtrer si la chaine est strictement positive, à compléter... :D ) A+ Bruno Apprendre => Prendre => Rendre
DenisHen Posté(e) le 5 avril 2018 Auteur Posté(e) le 5 avril 2018 Je suis entièrement d'accord, mais j'ai OUBLIÉ que le retour de "InputBox" était toujours une chaine... J'étais concentré (en un mot) sur le contenu de la variable et non son format... Windows 11 / AutoCAD 2024 Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net). Davantage d'avantages, avantagent davantage (Bobby Lapointe). La connaissance s'accroît quand on la partage (Socrate). Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)
(gile) Posté(e) le 5 avril 2018 Posté(e) le 5 avril 2018 Pour un entier strictement positif, on peut utiliser le fait que atoi retourne 0 si la chaîne ne représente pas un nombre. (while (not (< 0 (setq ech (atoi (getstring "\nEchelle: "))))) (alert "Nécessite un entier strictement positif") ) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
DenisHen Posté(e) le 5 avril 2018 Auteur Posté(e) le 5 avril 2018 Merci (gile) pour cette précision... J'en prend note... Windows 11 / AutoCAD 2024 Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net). Davantage d'avantages, avantagent davantage (Bobby Lapointe). La connaissance s'accroît quand on la partage (Socrate). Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)
VDH-Bruno Posté(e) le 5 avril 2018 Posté(e) le 5 avril 2018 Pour un entier strictement positif, on peut utiliser le fait que atoi retourne 0 si la chaîne ne représente pas un nombre. (while (not (< 0 (setq ech (atoi (getstring "\nEchelle: "))))) (alert "Nécessite un entier strictement positif") ) Idem pour atof, bien joué :) Apprendre => Prendre => Rendre
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