Salut,
J'essaie essentiellement d'accéder à une variable qui a été créée dans une fonction. J'essaie d'imprimer cette variable en dehors de la fonction, mais je continue à recevoir des erreurs de référence 'Glue' non résolues/supprimées. J'ai essentiellement une fonction pour un bouton qui crée une nouvelle fenêtre et stocke la valeur de lf à l'intérieur de cette fonction et de la création de fenêtre. Je veux pouvoir imprimer la valeur de lf mais je ne sais pas comment. Toute suggestion serait appréciée. Une autre question est que lorsque j'imprime lf à l'intérieur de la fonction OKscript1, il n'est pas imprimé dans le journal. Est-ce parce que OKscript1 n'est pas une fonction mais une Expr ? De plus, lorsque j'exécute le programme pour la première fois après avoir sélectionné un fichier, j'obtiens une erreur de nom non résolue. Mais lorsque je l'exécute à nouveau et que je sélectionne un autre fichier et affiche le journal, le fichier précédent que j'avais sélectionné avant de quitter apparaît dans le journal. Une quelconque idée du pourquoi? Je pense que c'est probablement soit une chose très simple que j'ai négligée, soit quelque chose à voir avec ma portée ?
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>
Salut @cwillden ,
Merci beaucoup pour l'aide. J'étais censé avoir une balise pour mettre mon texte en gras, c'est pourquoi j'ai utilisé le balisage, mais j'ai réalisé que je les avais supprimés. J'ai changé les lancers et les zones de texte en légendes juste pour la cohérence. Merci encore pour l'explication.
Salut @Jaz ,
J'ai corrigé l'indentation de ce script car il était difficile à suivre.J'ai également supprimé les éléments <
Quelques problèmes ici : lorsque vous exécutez le script, il exécutera ces lignes "print(lf)" que vous aviez en bas avant même que l'utilisateur ne fasse quoi que ce soit avec les boîtes de dialogue."lf" n'existe même pas encore lorsque vous demandez à JMP de l'imprimer.Vous devez le mettre dans l'expression OKScript1 afin que la ligne de code ne soit exécutée que lorsque l'utilisateur appuie sur OK.
Vous ne pouvez pas non plus fermer la fenêtre avant d'avoir récupéré les éléments de ListF car ListF n'existera plus.Vous avez fait commenter cette ligne de code, donc je ne sais pas si cela a causé votre erreur "référence d'objet supprimée" ou non.
Le script ci-dessous semble fonctionner.Je n'obtiens aucune erreur et print(lf) fonctionne.Il a montré les fichiers que j'ai sélectionnés dans une liste dans le journal.
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>Je recommanderais de changer l'instruction "Success" if à la fin.Je ne crois pas que CB << Set(1,0) va être évalué car vous avez déjà utilisé Throw() pour arrêter le traitement ultérieur.Envisagez de remplacer Throw() par Caption() dans cette zone.Cela fait également en sorte que le message "succès" ne ressemble pas à une erreur comme c'est le cas avec Throw().