Hola,
Básicamente estoy tratando de acceder a una variable que se ha creado dentro de una función. Estoy tratando de imprimir esa variable fuera de la función, pero sigo obteniendo errores de 'Pegamento' de referencia sin resolver/eliminados. Básicamente tengo una función para un botón que crea una nueva ventana y almacena el valor de lf dentro de esa función y creación de ventana. Quiero poder imprimir el valor de lf pero no estoy seguro de cómo. Cualquier sugerencia sera apreciada. Otra pregunta es que cuando imprimo lf dentro de la función OKscript1, no se imprime en el registro. ¿Es porque OKscript1 no es una función sino una Expr? Además, cuando ejecuto el programa por primera vez después de seleccionar un archivo, aparece un error de nombre sin resolver. Pero cuando lo ejecuto de nuevo y selecciono un archivo diferente y veo el registro, aparece en el registro el archivo anterior que había seleccionado antes de salir. ¿Alguna idea de por qué? Creo que es probablemente algo realmente simple que he pasado por alto o algo que tiene que ver con mi alcance.
mainWindow = New Window("Instruction Tagger",
ob = Outline Box("Instruction Tagger",
Border Box(Left(3), top(2),
V List Box(
H List Box(
Panel Box("Please choose one of the following options:", <<MARKUP> 1), Throw ("Error: Please only select one measurement file. Alternitavely, go back and select 'Tag Multiple Files'. "));
if(Try(N Items(lf) < 1), Throw ("Error: Please select one measurement file.Alternitavely, go back and select 'Tag Multiple Files'."));
);
print(lf);
print(lf); </MARKUP>
Hola @cwillden ,
Muchísimas gracias por la ayuda. Se suponía que debía tener una etiqueta para poner mi texto en negrita, por eso usé Markup, pero me di cuenta de que los eliminé. Cambié los lanzamientos y los cuadros de texto a subtítulos solo por consistencia. Gracias de nuevo por la explicación.
Hola @Jaz ,
Reparé la sangría en este guión porque era difícil de seguir.También eliminé las cosas <
Un par de problemas aquí: cuando ejecuta el script, ejecutará esas líneas "print (lf)" que tenía en la parte inferior antes de que el usuario haga algo con los cuadros de diálogo."lf" ni siquiera existe todavía cuando le pide a JMP que lo imprima.Debe ponerlo dentro de la expresión OKScript1 para que esa línea de código se ejecute solo cuando el usuario presione Aceptar.
Tampoco puede cerrar la ventana antes de obtener los elementos de ListF porque ListF ya no existirá.Tenía esa línea de código comentada, por lo que no estoy seguro de si eso estaba causando su error de "referencia de objeto eliminado" o no.
El siguiente script parece funcionar.No recibo errores y la impresión (lf) está funcionando.Mostró los archivos que seleccioné en una lista en el registro.
mainWindow = New Window("Instruction Tagger",
ob = Outline Box("Instruction Tagger",
Border Box(Left(3), top(2),
V List Box(
H List Box(
Panel Box("Please choose one of the following options:",
Button Box("Tag a Single File", singleFileButton1("Tag Instructions to Data") ),
Button Box( "Tag Multiple Files", singleFileButton1("Tag Instructions to Data") ),
Text Box("Note: a button to tag the data will appear automatically after you have selected the measurement & PFD files. ")
)
)
)
)
)
);
singleFileButton1 = Function({x},
mainWindow << Close Window;
choosingFilesWindow = New Window(x,
ob = Outline Box("Select Your Files: ",
Border Box (Left(3), top(2)),
vDisplay = V List Box(
H List Box(
Panel Box("Please select one of the options below to choose your measurement & PFD file: ",
Button Box("Select Measurement File", selectMeasurementFileButton("Select Measurement File")),
Button Box("Select PFD File", selectPFDFileButton("Select PFD File")),
Lineup Box (N Col(2), Spacing(3)),
Panel Box("Files Added",
CB = Check Box({"Measurement file added", "PFD file added"},<<SET> 1), Throw ("Error: Please only select one measurement file. Alternitavely, go back and select 'Tag Multiple Files'. "));
if(Try(N Items(lf) < 1), Throw ("Error: Please select one measurement file.Alternitavely, go back and select 'Tag Multiple Files'."));
);</SET>Recomendaría cambiar la declaración "Éxito" si al final.No creo que CB << Set(1,0) se evalúe porque ya usó Throw() para detener el procesamiento posterior.Considere reemplazar Throw() con Caption() en ese cuadro.Eso también hace que el mensaje de "éxito" no parezca un error como lo hace con Throw().