Aller au contenu

vl-catch-all-apply


LUDWIG

Messages recommandés

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

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

 (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

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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é