Hallo,
Ich habe ein Skript erstellt, das eine Datenanalyse durchführt, für dessen Konfiguration jedoch verschiedene Benutzereingaben erforderlich sind. Es gibt Fälle, in denen ich später eine ähnliche Analyse durchführen möchte, aber nicht alle meine Einstellungen erneut eingeben muss. Das Hauptskript kann bereits vorhandene Variablen lesen und diese Felder automatisch ausfüllen. Wenn ich also eine Möglichkeit habe, diese Standardwerte zu speichern und zu importieren, werde ich eingestellt. Ich möchte mehrere unterschiedliche Konfigurationen haben und nicht das Skript selbst bearbeiten müssen, um ein neues zu erstellen.
Eine Idee bestand darin, eine Tabelle mit einer Spalte mit Variablennamen und einer Spalte mit ihren Werten zu speichern, aber das funktionierte nicht gut mit verschiedenen Variablentypen (Zahlen, Zeichenfolgen, Listen).
Eine besser erscheinende Idee besteht darin, andere .jsl-Dateien, die die Standardeinstellungen für verschiedene Anwendungsfälle enthalten, in einem gemeinsam genutzten Namespace zu speichern und dann den entsprechenden Namensraum auszuführen, bevor ich mein Hauptskript ausführe. Ich möchte die Konfigurationsdatei gerne aus meinem Skript heraus erstellen, anstatt sie manuell zu erstellen.
Ich habe diesen anderen Beitrag zum Speichern neuer JSL-Dateien gefunden. https://community.jmp.com/t5/Discussions/how-do-you-create-a-new-script-file-from-jsl/td-p/34740
Es scheint, als ob ich in der Lage sein sollte, ein JSL-Anführungszeichen einzurichten und dann die aktuellen Werte von Variablen in dieses Anführungszeichen einzufügen, aber NameExpr funktioniert dafür nicht. Zeichenfolgen werden ohne Anführungszeichen ersetzt, Listen erscheinen einfach als Liste und Zahlen werden ignoriert. Gibt es eine kleine Änderung, die dafür sorgen würde, dass dies funktioniert, oder eine bessere Möglichkeit, dasselbe Ziel zu erreichen?
Danke!
names default to here (1);
//namespace for the shared variables
If( !Namespace Exists( "TestNS" ), New Namespace( "TestNS" ) );
//the variables I want to save for later
TestNS:a = 5;
TestNS:b = "text";
TestNS:c = {1,2,3,4};
TestNS:d = {"a","b","c","d"};
//set up script to save as JSL
script = JSL Quote(
TestNS:a = a_dv;
TestNS:b = b_dv;
TestNS:c = c_dv;
TestNS:d = d_dv;
);
//substitute the dummy values for the current values... this isn't working
substitute Into (script, expr(a_dv), nameexpr (TestNS:a));
substitute Into (script, expr(b_dv), nameexpr (TestNS:b));
substitute Into (script, expr(c_dv), nameexpr (TestNS:c));
substitute Into (script, expr(d_dv), nameexpr (TestNS:d));
show(script);
//save script for later use
Save Text File( "$downloads\MyScript.jsl", script );