stephan35 Posté(e) le 15 novembre 2007 Posté(e) le 15 novembre 2007 Bonjour à tous Tout d'abord, je ne sais pas si le terme employé est le bon ... ça fait genre j'en connais un peu ... ;) Bref, mon soucis est le suivant : J'ai besoin de mémoriser des informations liées à mes boites de dialogue (créées avec OpenDCL),sur la taille de chacune de mes boites, Chacune de mes boites on une ID bien précise permettant de l'identifier : @$GPE:BOX je souhaitait creer une fonction qui sait réinitialiser la taille de chaque boite, qui s'appelerai extend_OnClicked, utilisant les variables @#gpe:box:extended:x et @#gpe:box:extended:y. Mon problème, c'est que cette fonction est unique ... (ben oui) je ve vais pas la recréerr pour chaque boite. (setq @$GPE:ODCL "DOSSIER" @$GPE:BOX "GPE:CONFIG") (defun c:extend_OnClicked ( /) (if @#gpe:box:extended:x (progn (dcl_Form_Resize GPE:CONFIG @#gpe:box:extended:y @#gpe:box:extended:x) (setq @#gpe:box:extended:y nil @#gpe:box:extended:x nil ) ) (progn (setq @#gpe:box:extended:x (nth 2 (dcl_Form_GetRectangle GPE:CONFIG))) (setq @#gpe:box:extended:y (nth 3 (dcl_Form_GetRectangle GPE:CONFIG))) (dcl_Form_SetDialogMinMaxSizes GPE:CONFIG 32 32 32 32) (dcl_Form_Resize GPE:CONFIG 32 32) ) ) ) Ce que je voudrais faire c'est associer le nom de la boite à la définition de la variable , genre : (setq (strcat "@#gpe:box:extended:" @$GPE:BOX ":x") 22) ........... :casstet: ou une méthode équivalente... Merci ... [Edité le 21/11/2007 par stephan35]
(gile) Posté(e) le 15 novembre 2007 Posté(e) le 15 novembre 2007 Je ne suis pa sûr de comprendre _$ (setq @$GPE:ODCL "DOSSIER" @$GPE:BOX "GPE:CONFIG")"GPE:CONFIG"_$ (set (read (strcat "@#gpe:box:extended:" @$GPE:BOX ":x")) 22)22_$ @#GPE:BOX:EXTENDED:GPE:CONFIG:X22 Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
stephan35 Posté(e) le 16 novembre 2007 Auteur Posté(e) le 16 novembre 2007 Trop fort Gile !!!!!!!! Et tu as bien compris !!!!! L'intérêt de cette technique, c'est que l'on créer des variables indéxée sur le résultat d'autres varaible, trop fort !!!!! Génial !!!! Youpi !!! :thumbup: Merci maître ... ;)
stephan35 Posté(e) le 21 novembre 2007 Auteur Posté(e) le 21 novembre 2007 Oops, J'ai résolu le problème trop vite !!!! Ce que m'a fournit gile fonctionne parfaitement, seulement, je ne sait pas relire mes données indéxées .... :casstet: En fait lorsque je fait : (setq @$GPE:ODCL "INDICES" @$GPE:BOX "GPE:INDICE") (set (read (strcat "@GPE:BOX:" @$GPE:BOX ":CHK")) "toto") Je créé une variable "@GPE:BOX:GPE:INDICE:CHK" qui contient "toto" Seulement j'aimerai pouvoir la relire de manière indéxée : Genre (if (= (read (strcat "@GPE:BOX:" @$GPE:BOX ":CHK")) "toto") (progn ) ) Et là je bloque bêtement ........... :casstet: Merci !!!!
(gile) Posté(e) le 24 novembre 2007 Posté(e) le 24 novembre 2007 Salut, Excuse moi, je n'avais pas vu passer ton message : (eval (read (strcat "@GPE:BOX:" @$GPE:BOX ":CHK"))) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
(gile) Posté(e) le 25 novembre 2007 Posté(e) le 25 novembre 2007 Une petite séquence qui peut aider à comprendre les fonctions eval, set, setq et quote (ou '), sachant que (setq a 1) est un raccourci pour (set (quote a) 1) ou (set 'a 1). Commande: (setq a 1)1 Commande: !a1 Commande: (setq b 'a)A Commande: !bA Commande: (eval b)1 Commande: (set b 2)2 Commande: !a2 Commande: !bA Commande: (eval b)2 Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
stephan35 Posté(e) le 25 novembre 2007 Auteur Posté(e) le 25 novembre 2007 Merci Gile ! ..... dans mon cas le plus dur est de ne pas confondre , effectivement, la syntaxe de création de la variable avec celle de l'interprétation de son contenu .... J'avais testé l' "eval" mais sans le "READ" qui sert à composé le nom de variable ..... PS: sympa ton petit " tuto " - " rappel " ;) Encore merci !
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