Comment pouvez-vous utiliser des variables globales avec des scripts chiffrésÀ l'aide d'un script crypté dans Jmp13, je souhaite lire une variable globale pré-affectée.
Exemple:
Avec une assignation de script standard...
a=0;
b=10;
Utilisation d'un script chiffré
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);
Objectif : Si la variable globale n'est pas définie, affectez-la dans le script chiffré.Si la variable globale est définie, utilisez la définition.
Cela fonctionne sans cryptage.De plus, après avoir exécuté le script chiffré, je peux voir les valeurs globales par défaut attribuées.
Alors, est-il possible d'utiliser une variable globale avec un script chiffré ?
Merci pour l'aide.
Re : Comment pouvez-vous utiliser des variables globales avec des scripts cryptésEh bien, vous et @Craige_Hales ont raison de dire que décocher l'option "Utiliser l'espace de noms ici..." dans le générateur de compléments résoudra votre problème spécifique.
Cependant, je suis sûr que @Craige_Hales serait d'accord avec moi que la meilleure pratique de programmation/script est de définir correctement toutes les variables lorsque vous les référencez.
L'option "Utiliser l'espace de noms ici..." est activée par défaut afin de protéger l'espace de noms global d'une corruption accidentelle.
Re : Comment pouvez-vous utiliser des variables globales avec des scripts cryptésJeff, merci pour la confirmation. Oui je suis d'accord. C'est une question de portée. Cependant, la solution consiste à décocher cette case dans le complément. Cela permet au script externe de définir un global et au complément interne de l'utiliser. J'aurais aimé pouvoir trouver cela dans l'un des guides. Tant pis.Re : Comment pouvez-vous utiliser des variables globales avec des scripts cryptésJe pense que cela vous rapprochera de la réponse; il semble que la valeur par défaut consiste à utiliser l'espace de noms Here dans un complément, vous devrez donc peut-être utiliser global:a plutôt qu'un
checked by defaultchecked by defaultcoché par défaut
Re : Comment pouvez-vous utiliser des variables globales avec des scripts cryptésANSWER ==> Décochez "Utiliser l'espace de noms "Here" pour les noms de variables JSL non qualifiés
Cela fonctionne pour le script de complément standard et pour les scripts chiffrés.
Un select: Use the "Here" namespaceUn select: Use the "Here" namespaceDésélectionner : utiliser l'espace de noms "Ici"
Re : Comment pouvez-vous utiliser des variables globales avec des scripts cryptésJe pense que c'est un problème de portée et d'espaces de noms, et le fait que le menu du complément utilise Noms par défaut ici(1) .
Si vous essayez de référencer des variables, vous devez toujours utiliser un opérateur de portée pour les référencer. L'opérateur de portée pour les variables globales est ::.
names default to here(1);
::a=0;
a=45;
if(::a==0, show("yes"));
if(here:a == 45, show("yes"));Re : Comment pouvez-vous utiliser des variables globales avec des scripts cryptésClarification supplémentaire : le problème n'est pas lié au chiffrement, mais au complément. L'utilisation de jsl directement dans le complément provoque le même problème. Les variables globales ne sont pas vues par le complémentRe : Comment pouvez-vous utiliser des variables globales avec des scripts cryptésClarification. Le problème réside dans l'utilisation du script chiffré dans un complément.
Je viens de confirmer que cela fonctionne avec le cryptage en tant que script autonome.
Alors, le complément fonctionne-t-il sur un espace variable différent ? Bizarre, car je peux voir d'autres variables à partir de scripts chiffrés dans ce complément
Toutes mes excuses pour ne pas avoir complètement débogué cela.