Aller au contenu

vl-catch-all-apply


Messages recommandés

Posté(e)

J'essayes de passer une variable pour les arguments d'une fonction que je veux tester par vl-catch-all-apply

 

 (vl-catch-all-apply 'load '("c:\\toto.lsp")) 

 

fonctionne

 

mais

  (setq n "c:\\toto.lsp")
(vl-catch-all-apply 'load '(n)) 

 

ne fonctionne pas !

 

Comment faire ?

Autocad 2021 - Revit 2022 - Windows 10

Posté(e)

Je pense plutôt sous cette forme:

 

(setq n '("c:\\toto.lsp"))

(vl-catch-all-apply 'load n)

 

ou alors peut être plus interessant, sous celle-ci:

 

(foreach n '(("c:\\titi.lsp") ("c:\\toto.lsp") ("c:\tatat.lsp") ("c:\\tutu.lsp"))

(vl-catch-all-apply 'load n)

)

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

Posté(e)

pour ceux qui apprennent, pourriez-vous être un peu plus explicite :

A quoi sert vl-catch-all-apply ???

merci

Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...

Posté(e)

Dans un programme lisp, si une fonction renvoit une erreur, ton programme risque de s'arrêter. Donc, une méthode consiste a d'abord tester si la fonction renvoit une erreur PUIS l'exécuter si c'est OK.

 

Dans mon cas, je fais un lisp pour charger tous les lisps d'un répertoire. Or si le nième lisp de ce répertoire est mal structuré, Autocad envoit une erreur, ma fonction de chargement s'arête et les lisps n+1 et suivant ne seront pas chargés.

Autocad 2021 - Revit 2022 - Windows 10

Posté(e)

 (setq n "c:\\toto.lsp")
(vl-catch-all-apply 'load (list n)) 

 

Si tu fait '(n) n n'est pas évalué : c'est la liste contenant la variable n, (list n) tu fais une liste avec la valeur de n.

 

Si (setq n "c:\\toto.lsp")

 

'(n) retourne (n)

 

(list n) retourne ("c:\\toto.lsp")

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)

BonusCad et (Gile), vous êtes des Dieux du Lisp ! :yltype:

Evidemment, a marche mieux comme ça, et le mieux, c'est que je crois que j'ai compris (!)

 

Qu'il est pointilleux ce langage ! Je rêve d'un lisp qui serait mon ami et qui comprendrait de suite se que je veux faire :heartpump:

Autocad 2021 - Revit 2022 - Windows 10

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é