Hallo,
Ich versuche im Grunde, auf eine Variable zuzugreifen, die innerhalb einer Funktion erstellt wurde. Ich versuche, diese Variable außerhalb der Funktion zu drucken, erhalte aber weiterhin die Fehlermeldung „Name ungelöster/gelöschter Verweis“ „Glue“. Ich habe im Grunde eine Funktion für eine Schaltfläche, die ein neues Fenster erstellt und den Wert von lf in dieser Funktion und Fenstererstellung speichert. Ich möchte den Wert von lf drucken können, bin mir aber nicht sicher, wie. Für Vorschläge wäre ich dankbar. Eine andere Frage ist, dass wenn ich lf innerhalb der Funktion OKscript1 drucke, es nicht im Protokoll gedruckt wird. Liegt das daran, dass OKscript1 keine Funktion, sondern ein Ausdruck ist? Wenn ich das Programm zum ersten Mal nach der Auswahl einer Datei ausführe, erhalte ich außerdem die Fehlermeldung „Name nicht aufgelöst“. Aber wenn ich es erneut ausführe und eine andere Datei auswähle und das Protokoll ansehe, erscheint die vorherige Datei, die ich vor dem Beenden ausgewählt hatte, im Protokoll. Irgendwelche Ideen, warum? Ich denke, es ist wahrscheinlich entweder eine ganz einfache Sache, die ich übersehen habe, oder etwas mit meinem Scoping zu tun?
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>
Hallo @cwillden ,
Vielen Dank für die Hilfe. Ich sollte ein Tag haben, um meinen Text fett zu machen, weshalb ich Markup verwendet habe, aber mir wurde klar, dass ich sie entfernt habe. Aus Gründen der Konsistenz habe ich die Würfe und Textfelder in Beschriftungen geändert. Nochmals vielen Dank für die Erklärung.
Hallo @Jaz ,
Ich habe die Einrückung in diesem Skript korrigiert, weil es schwer zu verstehen war.Ich habe auch das <
Hier gibt es ein paar Probleme: Wenn Sie das Skript ausführen, werden die „print(lf)“-Zeilen unten ausgeführt, bevor der Benutzer überhaupt etwas mit den Dialogen macht.„lf“ existiert noch nicht einmal, wenn Sie JMP bitten, es zu drucken.Sie müssen es in den OKScript1-Ausdruck einfügen, damit diese Codezeile nur ausgeführt wird, wenn der Benutzer auf OK drückt.
Sie können das Fenster auch nicht schließen, bevor Sie die Elemente von ListF erhalten, da ListF nicht mehr existiert.Sie haben diese Codezeile auskommentiert, daher bin ich mir nicht sicher, ob dies den Fehler „Gelöschte Objektreferenz“ verursacht hat oder nicht.
Das folgende Skript scheint zu funktionieren.Ich erhalte keine Fehlermeldungen und print(lf) funktioniert.Die von mir ausgewählten Dateien wurden in einer Liste im Protokoll angezeigt.
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>Ich würde empfehlen, die if-Anweisung „Success“ am Ende zu ändern.Ich glaube nicht, dass CB << Set(1,0) ausgewertet wird, da Sie bereits Throw() verwendet haben, um die weitere Verarbeitung zu stoppen.Erwägen Sie, Throw() in diesem Feld durch Caption() zu ersetzen.Dadurch sieht die „Erfolgs“-Meldung auch nicht wie bei Throw() wie ein Fehler aus.