32_fr-FR
Scripting : Comment obtenir un objet Name à partir d'une chaîne entre guillemets ?Supposons que j'ai le nom d'une variable de table sous forme de chaîne entre guillemets dans une variable d'exécution. Comment puis-je obtenir l'objet Name de la variable de table à partir de cela ?
J'ai eu ce même problème avec les colonnes de table que j'ai pu contourner en obtenant une liste de noms de colonnes de table et en les parcourant jusqu'à ce que je trouve un objet Name qui corresponde à la chaîne. Malheureusement, il ne semble pas y avoir de fonction qui renvoie les variables de table, donc cette méthode ne fonctionne pas.
Arrière-plan:
Le but est de disposer d'une bibliothèque réutilisable pouvant intégrer des formules dans des colonnes. Étant donné que le code de réutilisation ne connaît pas les noms de variables de table ou les noms de colonnes, je dois les transmettre à mes fonctions en tant que paramètres de chaîne. Cependant, si j'utilise la variable chaîne lors de la création de la formule, le résultat est une chaîne entre guillemets au lieu d'une référence à la variable de colonne ou de table.Re : Scripting : Comment obtenir un objet Name à partir d'une chaîne entre guillemets ?Vous pouvez obtenir la valeur de la variable de table à partir de la chaîne avec
x = Table de données actuelle () << Obtenir la variable de table ( "enseignant" );
Et vous pouvez obtenir la valeur d'une colonne avec
x = colonne("hauteur")[ 1 ];
Les expressions peuvent être utilisées pour une métaprogrammation plus compliquée (JSL qui manipule JSL), mais puisque vous commencez avec une chaîne, il peut être préférable d'utiliser Parse() et Eval(). Par exemple, ce qui suit prend une chaîne de nom de fonction et la traite comme un nom de fonction.
s = "carré" ; x = Eval( Parse( s || "(2)" ));Re: Scripting : Comment obtenir un objet Name à partir d'une chaîne de caractères entre guillemets ?La fonction Parse() est exactement ce qu'il me fallait. Si seulement je l'avais connue il y a une semaine ! 
Merci!
EDIT : J'ai parlé un peu trop vite. La fonction `parse()` ne fonctionnera pas si le nom de la variable de la table contient des parenthèses (par exemple, « Largeur (mm) »). Je vais y réfléchir encore un peu…
Message modifié par : DaveSRe: Scripting : Comment obtenir un objet Name à partir d'une chaîne de caractères entre guillemets ?J'ai trouvé une solution qui fonctionne :
-----------------------------Début du script-----------------------------
Effacer les variables globales();
Effacer le journal();
MyParse = Fonction(
{sName}, {Valeur locale par défaut},
ex = "Nom(xxx)";
newStr = "\!"" || sName || "\!"";
retVal = Munger(ex, 0, "xxx", newStr);
retVal = Parse(retVal);
);
str = "Largeur (mm)";
nom = MyParse(str);
afficher(nom);
-----------------------------Fin du script-----------------------------
Évidemment, cela se limite à l'analyse des chaînes de caractères qui sont des noms. Merci pour votre aide !
Comments
There are no comments yet