¿Hay alguna forma de reemplazar Eval (Parse (Eval Insert ())) al crear nombres de variables sobre la marcha?<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Cada vez que trato de crear variables en bucles, siempre ha estado usando Eval, Parse y Eval Insert. A continuación se muestra un ejemplo
For(i=0 , i < N Table(), i++,Eval(Parse(Eval Insert("Variable^i^"))));El método anterior funciona bien, pero a medida que los scripts se vuelven enormes, más y más variables y operaciones deben colocarse entre comillas, lo que hace que la depuración sea realmente difícil. ¿Hay alguna otra forma de crear variables sobre la marcha, además del método Eval, Parse, Eval Insert?
Re: ¿Hay alguna forma de reemplazar Eval(Parse(Eval Insert())) al crear nombres de variables sobre la marcha?La única forma en que sé cómo deshacerme de eval (a partir de ahora) es usando el método de Ian, que hace que la depuración sea un poco mejor. Porque me di cuenta de que los errores que ocurren dentro de las cosas que evalúo no aparecen en el registro, lo que hace que la depuración sea un poco más difícil...
Re: ¿Hay alguna forma de reemplazar Eval(Parse(Eval Insert())) al crear nombres de variables sobre la marcha?Solo tenía que hacer algo similar y una variedad de expresiones funcionó.Sin alejarse de evaluar aunque.Aquí hay un ejemplo de código que ilustra las cosas:
tb_expr = {} ;
tb_expr [ 1 ] = expr ( cuadro de lista ( caja de texto ( "1: " ) , caja de texto ( "El primero" ))) ;
tb_expr [ 2 ] = expr ( cuadro de lista ( caja de texto ( "2: " ) , caja de texto ( "Segundo" ))) ;
tab_expr = expr (
ficha_prueba << reemplazar ( 1 , "Pestaña de prueba" , evaluar ( tb_expr [ índice ])) ;
) ;
noroeste = nueva ventana ( "prueba" ,
cuadro de lista ( caja de botones ( "Uno" ,
índice = 1 ;
tab_expr ;
) ,
caja de botones ( "Dos" ,
índice = 2 ;
tab_expr ;
) ,
) ,
ficha_prueba = cuadro de pestañas ( "Pestaña de prueba" , evaluar ( tb_expr [ 1 ]))
) ;
Re: ¿Hay alguna forma de reemplazar Eval(Parse(Eval Insert())) al crear nombres de variables sobre la marcha?Desgraciadamente no conozco ninguna lista de este tipo. ¡Pero pronto sabrá si no funciona!
Recuerdo que (creo que con JMP 10), el 'SliderBox{}' no se podía suscribir, así que tuve que trabajar un poco más. Es posible que esto se haya solucionado posteriormente.
Re: ¿Hay alguna forma de reemplazar Eval(Parse(Eval Insert())) al crear nombres de variables sobre la marcha?Hola, Ian,
Gracias por señalar que el método de almacenamiento de displayBoxes en una lista. Voy a intentar esos para Combo Boxes en lugar de Number Edit Boxes. Por cierto. ¿Sabe dónde puedo obtener una lista completa de los cuadros de visualización que se pueden suscribir?
Re: ¿Hay alguna forma de reemplazar Eval(Parse(Eval Insert())) al crear nombres de variables sobre la marcha?Esto podría darte una pista. Algunos (pero, la última vez que revisé, no todos) de los cuadros de visualización tienen un valor l que se puede subíndice:
Nombres predeterminados a aquí ( 1 ) ;
// Cree una interfaz de usuario 'dinámica'. . .
norte = 6 ;
lubricante = AlinearCuadro ( NCol ( 1 )) ;
Nebs = {} ;
Para ( i = 1 , i <= norte , i ++,
Insertar en ( Nebs , NumberEditBox ( . )) ;
lubricante << Adjuntar ( Nebs [ i ]) ;
) ;
noroeste = Nueva ventana ( "Lista de cuadros de edición de números" , lubricante , BotónCuadro ( "DE ACUERDO" , Aceptar script )) ;
// Obtener los valores de entrada del usuario cuando se presiona 'OK'. . .
Aceptar script =
exp. (
noroeste << Cerrar ventana ;
Para ( i = 1 , i <= norte , i ++, Imprimir ( Nebs [ i ] << conseguir ))
) ;
Re: ¿Hay alguna forma de reemplazar Eval(Parse(Eval Insert())) al crear nombres de variables sobre la marcha?Si tiene muchas variables, ¿quizás una estructura de lista o matriz ayudaría?¿O una matriz asociativa?
Re: ¿Hay alguna forma de reemplazar Eval(Parse(Eval Insert())) al crear nombres de variables sobre la marcha?Un ejemplo sería, quiero crear una cantidad igual de esto a continuación...

para cada tabla de datos abierta, por lo que la cantidad de cuadros combinados o cuadros de botones creados cada vez variará según la cantidad de tablas de datos abiertas.
Y tengo una variable asignada a cada cuadro combinado y cuadro de botón con fines de seguimiento (y debe estar allí). Entonces, esto no me deja otra opción que crear una variable usando Eval, Parse y Eval Insert cada vez para tener una variable que rastree cada cuadro combinado/botón que creo.
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\!" ) ) ); " ) ) );
¿Hay alguna manera de eliminar Eval, Parse y Eval Insert y usar algo más simple?
Editar: olvidé mencionar que el código está dentro de un bucle for con bucle variable "i"
Re: ¿Hay alguna forma de reemplazar Eval(Parse(Eval Insert())) al crear nombres de variables sobre la marcha?JSL admite numerosos patrones de diseño, algunos quizás no obvios. ¿Podría dar un ejemplo más específico de cuándo quiere 'crear variables en un bucle', que también indica el siguiente paso de cómo realmente querría usar tales variables?