Wie können Sie globale Variablen mit verschlüsselten Skripten verwenden?Mithilfe eines verschlüsselten Skripts in Jmp13 möchte ich eine vorab zugewiesene globale Variable auslesen.
Beispiel:
Mit einer Standardskriptzuweisung ...
a=0;
b=10;
Verwendung eines verschlüsselten Skripts
if (IsEmpty(a)==1,a=5); // DO NOTHING IF ITS NOT EMPTY
if (IsEmpty(b)==1,b=50); // DO NOTHING IF ITS NOT EMPTY
Write(a);
Write(b);
Ziel: Wenn die globale Variable undefiniert ist, weisen Sie sie im verschlüsselten Skript zu.Wenn die globale Variable definiert ist, verwenden Sie die Definition.
Es funktioniert ohne Verschlüsselung.Außerdem kann ich nach der Ausführung des verschlüsselten Skripts die zugewiesenen Standard-Globals sehen.
Ist es also möglich, eine globale Variable mit einem verschlüsselten Skript zu verwenden?
Danke für die Hilfe.
Betreff: Wie können Sie globale Variablen mit verschlüsselten Skripten verwenden?Nun, du und @Craige_Hales Ich habe Recht, dass das Deaktivieren der Option „Hier-Namespace verwenden…“ im Add-In-Builder Ihr spezifisches Problem beheben wird.
Allerdings bin ich mir sicher @Craige_Hales Ich würde mir zustimmen, dass die bessere Programmier-/Skripting-Praxis darin besteht, alle Variablen richtig zu definieren, wenn Sie darauf verweisen.
Die Option „Hier-Namensraum verwenden …“ ist standardmäßig aktiviert, um den globalen Namensraum vor versehentlicher Beschädigung zu schützen.
Betreff: Wie können Sie globale Variablen mit verschlüsselten Skripten verwenden?Jeff, danke für die Bestätigung. Ja, ich stimme zu. Es handelt sich um ein Scoping-Problem. Die Lösung besteht jedoch darin, das Kontrollkästchen im Add-In zu deaktivieren. Dadurch kann das externe Skript einen globalen Wert festlegen und das interne Add-In kann ihn verwenden. Ich wünschte, ich hätte das in einem der Reiseführer finden können. Nun ja.Betreff: Wie können Sie globale Variablen mit verschlüsselten Skripten verwenden?Ich denke, das wird Sie der Antwort nahe bringen; Es sieht so aus, als ob die Standardeinstellung darin besteht, den Here-Namespace in einem Add-In zu verwenden. Daher müssen Sie möglicherweise global:a anstelle von a verwenden
checked by defaultchecked by defaultstandardmäßig aktiviert
Betreff: Wie können Sie globale Variablen mit verschlüsselten Skripten verwenden?ANTWORT ==> Klicken Sie auf „Den Namensraum „Here“ für nicht qualifizierte JSL-Variablennamen verwenden“.
Es funktioniert für Standard-Add-In-Skripte und für verschlüsselte Skripte.
Un select: Use the "Here" namespaceUn select: Use the "Here" namespaceAuswahl aufheben: Den Namensraum „Here“ verwenden
Betreff: Wie können Sie globale Variablen mit verschlüsselten Skripten verwenden?Ich glaube, dass dies ein Problem des Bereichs und der Namespaces sowie der Tatsache ist, dass das Add-In-Menü verwendet wird Namen standardmäßig hier(1) .
Wenn Sie versuchen, auf Variablen zu verweisen, sollten Sie immer a verwenden Scoping-Operator um sie zu referenzieren. Der Bereichsoperator für globale Variablen ist ::.
names default to here(1);
::a=0;
a=45;
if(::a==0, show("yes"));
if(here:a == 45, show("yes"));Betreff: Wie können Sie globale Variablen mit verschlüsselten Skripten verwenden?Weitere Klarstellung: Das Problem liegt nicht bei der Verschlüsselung, sondern beim Add-In. Die Verwendung der JSL direkt im Add-In verursacht das gleiche Problem. Die globalen Variablen werden vom Add-In nicht gesehenBetreff: Wie können Sie globale Variablen mit verschlüsselten Skripten verwenden?Klärung. Das Problem liegt in der Verwendung des verschlüsselten Skripts in einem Add-In.
Habe gerade bestätigt, dass es mit der Verschlüsselung als eigenständiges Skript funktioniert.
Funktioniert das Add-In also auf einem anderen Variablenbereich? Seltsam, da ich in diesem Add-In andere Variablen aus verschlüsselten Skripten sehen kann
Entschuldigung, dass ich das nicht vollständig debuggt habe.