Analyser la chaîne entre guillemets la plus à l'extérieurJ'écris un script qui crée un script supplémentaire sur la table de données sous le nom de "Nouveau script". Mais j'ai un problème avec l'analyse de la chaîne que j'ai configurée comme code à placer dans le nouveau script.
Le problème est que lorsque j'exécute "dt << New Script("Script", parse(a));" lorsqu'il analyse la chaîne, il suppose que la citation précédant le Graph Builder est la première citation, puis termine cette citation au début de la section "Titre du graphique" et se termine. Je dois être capable d'écrire dans le script que mon script écrit dans la table de données, de nombreuses citations sans qu'elles soient analysées lorsque je les place dans le script.
Le code ressemble à ceci :
a = "Parse(Eval(Eval Insert(
"Graph Builder(
...
Dispatch(
... ,"Graph Title",
),
....
)"
)));
Personnalisation de masseRe : Analyser la chaîne entre guillemets la plus externeSalut @Martin .
Ceci est un exemple avec Big Class et Substitute
a) pour remplacer TempY par la variable
b) pour obtenir le code dans la fonction NewScript.
Le TempY dans "Eléments" a à remplacer par "Y", vous pouvez donc y mettre "Y" directement.
Vouliez-vous changer "Y" dans Variables ?
Names Default to Here(1);
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
TempY=Expr(Y);
myCode= Substitute(Expr(
Graph Builder(
Size( 1500, 400 ),
Show Control Panel( 0 ),
Show Title( 0 ),
Variables(
X( :age ),
Y( :height /*change this one*/ )
),
Elements( Points( X, TempY, Legend( 6 ) ) )
)),
Expr(TempY),Name Expr(TempY));
Eval(Substitute(Expr(dt << New Script("Script", __script__)),Expr(__script__),Name Expr(myCode)))
Re : Analyser la chaîne entre guillemets la plus externeJe suis d'accord que vous devriez apprendre à utiliser les expressions, mais vous devez également apprendre à travailler avec des chaînes de caractères. Utilisez la séquence d'échappement \!" pour saisir un guillemet double à l'intérieur d'une chaîne. Sinon, le guillemet est interprété comme un délimiteur de chaîne comme vous l'avez découvert.
Re : Analyser la chaîne entre guillemets la plus externeC'est le script exact que j'ai besoin de mettre dans un nouveau script de table :
Eval(
Parse(
eval Insert(
"\[Graph Builder(
Size( 1500, 400 ),
Show Control Panel( 0 ),
Show Title( 0 ),
Variables(
X( :TIME ),
Y( :Y )
),
Elements( Points( X, ^TempY^, Legend( 6 ) ) ),
SendToReport(
Dispatch(
{},
"Graph Builder",
OutlineBox,
{Set Title( "My New Title" ),
Image Export Display( Normal )}
),
Dispatch(
{},
"TIME",
ScaleBox,
{Format( "Format Pattern", "<M><-><D><-><YY> <ZHH><AMPM>" ),
Min( 3717386000 ), Max( 3717507800 ), Interval( "Hour" ), Inc( 4 ),
Minor Ticks( 0 ), Label Row( Label Orientation( "Vertical" ) )}
),
Dispatch(
{},
"graph title",
TextEditBox,
{Set Text( "Graph Title" )}
),
Dispatch(
{},
"Y title",
TextEditBox,
{Set Text( "Thing of Interest" )}
)
)
)]\"
)
)
);</AMPM></ZHH></YY></D></M>La raison de "Eval(Parse(Eval Insert(") est qu'il y a une variable dans le script "TempY" qui est le nom d'une autre variable de table qui est modifiée via une boîte radio dans une fenêtre de saisie.
Re : Analyser la chaîne entre guillemets la plus externeVous devez probablement regarder expr() et insérer into() ou remplacer into() pour construire votre nouveau script de table. Si vous développez votre scipt pour montrer ce que vous avez, nous pourrons peut-être vous aider plus en détail.