Existe-t-il un moyen de remplacer Eval(Parse(Eval Insert())) lors de la création de noms de variables lors de vos déplacements ?<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Chaque fois que j'essaie de créer des variables dans des boucles, j'ai toujours utilisé Eval, Parse et Eval Insert. Un exemple est montré ci-dessous
For(i=0 , i < N Table(), i++,Eval(Parse(Eval Insert("Variable^i^"))));La méthode ci-dessus fonctionne bien, mais à mesure que les scripts deviennent volumineux, de plus en plus de variables et d'opérations doivent être placées entre guillemets, ce qui rend le débogage très difficile. Existe-t-il un autre moyen de créer des variables en déplacement, autre que la méthode Eval, Parse, Eval Insert ?
Re : Existe-t-il un moyen de remplacer Eval(Parse(Eval Insert())) lors de la création de noms de variables lors de vos déplacements ?La seule façon que je connaisse pour me débarrasser d'eval (pour l'instant) est d'utiliser la méthode de Ian, ce qui améliore un peu le débogage. Parce que j'ai réalisé que les erreurs qui se produisent dans les éléments que j'évalue n'apparaissent pas dans le journal, ce qui rend le débogage un peu plus difficile ...
Re : Existe-t-il un moyen de remplacer Eval(Parse(Eval Insert())) lors de la création de noms de variables lors de vos déplacements ?Je devais juste faire quelque chose de similaire et un tableau d'expressions a fait l'affaire.Pas question de s'éloigner eval mais.Voici un exemple de code qui illustre les choses :
tb_expr = {} ;
tb_expr [ 1 ] = expr ( hlistbox ( zone de texte ( "1: " ) , zone de texte ( "Premier" ))) ;
tb_expr [ 2 ] = expr ( hlistbox ( zone de texte ( "2 : " ) , zone de texte ( "Deuxième" ))) ;
tab_expr = expr (
test_tab << remplacer ( 1 , "Onglet Test" , eval ( tb_expr [ indice ])) ;
) ;
nouveau = nouvelle fenetre ( "test" ,
hlistbox ( boîte à boutons ( "Un" ,
indice = 1 ;
tab_expr ;
) ,
boîte à boutons ( "Deux" ,
indice = 2 ;
tab_expr ;
) ,
) ,
test_tab = boîte à onglets ( "Onglet Test" , eval ( tb_expr [ 1 ]))
) ;
Re : Existe-t-il un moyen de remplacer Eval(Parse(Eval Insert())) lors de la création de noms de variables lors de vos déplacements ?Je n'ai malheureusement pas connaissance d'une telle liste. Mais vous saurez bientôt si cela ne fonctionne pas !
Je me souviens que (avec JMP 10 je pense), le 'SliderBox{}' n'était pas inscriptible, donc j'ai dû faire un peu plus de travail. Cela a peut-être été corrigé par la suite.
Re : Existe-t-il un moyen de remplacer Eval(Parse(Eval Insert())) lors de la création de noms de variables lors de vos déplacements ?Salut Ian,
Merci d'avoir signalé que la méthode de stockage des displayBoxes dans une liste. Je vais les essayer pour les Combo Boxes au lieu des Number Edit Boxes. D'ailleurs. Savez-vous où je peux obtenir une liste complète des boîtes d'affichage inscriptibles ?
Re : Existe-t-il un moyen de remplacer Eval(Parse(Eval Insert())) lors de la création de noms de variables lors de vos déplacements ?Cela pourrait vous donner un indice. Certaines (mais, la dernière fois que j'ai vérifié, pas toutes) des boîtes d'affichage ont une lvalue inscriptible :
NomsDefaultToHere ( 1 ) ;
// Construire une interface utilisateur "dynamique". . .
n = 6 ;
lubrifier = LineUpBox ( sous-col ( 1 )) ;
nebs = {} ;
Pour ( je = 1 , je <= n , je ++,
Insérer dans ( nebs , NumberEditBox ( . )) ;
lubrifier << Ajouter ( nebs [ je ]) ;
) ;
nouveau = Nouvelle fenetre ( "Liste des zones d'édition de nombres" , lubrifier , ButtonBox ( "D'ACCORD" , OKscript )) ;
// Récupère les valeurs saisies par l'utilisateur lorsque 'OK' est appuyé . . .
OKscript =
Expr (
nouveau << Fermer la fenêtre ;
Pour ( je = 1 , je <= n , je ++, Imprimer ( nebs [ je ] << obtenir ))
) ;
Re : Existe-t-il un moyen de remplacer Eval(Parse(Eval Insert())) lors de la création de noms de variables lors de vos déplacements ?Si vous avez beaucoup de variables, peut-être qu'une liste ou une structure matricielle vous aiderait ?Ou un tableau associatif ?
Re : Existe-t-il un moyen de remplacer Eval(Parse(Eval Insert())) lors de la création de noms de variables lors de vos déplacements ?Un exemple serait, je veux créer une quantité égale de ceci ci-dessous ...

pour chaque table de données ouverte, de sorte que la quantité de zones combinées ou de boîtes à boutons créées à chaque fois varie en fonction de la quantité de tables de données ouvertes.
Et j'ai une variable assignée à chaque boîte combinée et boîte à boutons à des fins de suivi (et elle doit être là). Cela ne me laisse donc pas d'autre choix que de créer une variable en utilisant Eval, Parse et Eval Insert à chaque fois afin d'avoir une variable de suivi de chaque Combo/Button Box que je crée.
Eval( Parse( Eval Insert( " if(DTopened > 1, lbBB^i^ = Border Box( H List Box( dtListBox^i^ = Combo Box( listofdtnames ), Picture Box( img ), Combo Box( test ), BBox^i^ = Button Box( \!"Fetch Temperature\!" ) ) ); " ) ) );
Existe-t-il un moyen d'éliminer Eval, Parse et Eval Insert et d'utiliser quelque chose de plus simple ?
Edit: j'ai oublié de mentionner que le code est à l'intérieur d'une boucle for avec la variable "i" en boucle
Re : Existe-t-il un moyen de remplacer Eval(Parse(Eval Insert())) lors de la création de noms de variables lors de vos déplacements ?JSL prend en charge de nombreux modèles de conception, certains peut-être non évidents. Pourriez-vous donner un exemple plus précis du moment où vous souhaitez "créer des variables dans une boucle", qui indique également la prochaine étape de la manière dont vous voudriez réellement utiliser ces variables ?