暗号化されたスクリプトは、スクリプトがそれ自体の一部を式から文字列に変換しようとすると、暗号化されていないスクリプトと同じようには動作しないことがあります。これは、スクリプトの暗号化を守るために必要です。Arg()、Head()、Substitute()などの式を操作する関数を使用すると、この問題を回避できます。Parse()を使用して、暗号化されたスクリプトの一部である文字列から式を作成することもできます。
ex = Expr(
aaa = 20;
Show( aaa );
);
temp = (Parse( Substitute( Char( Name Expr( ex ) ), "aaa", "bbb" ) ));
// この方法は誤りなのでやらないこと
temp;
Char()が exに格納されている式の暗号化を破ることができないため、スクリプトは暗号化されたときに失敗します。二番目の例は以下のとおりです。
ex = Expr(
aaa = 20;
Show( aaa );
);
temp = Substitute( Name Expr( ex ), Expr( aaa ), Expr( bbb ) );
// この方法が使用できるのであれば、ベストの選択
temp;
ch = "aaa = 20; Show(aaa);";
temp = Parse( Substitute( ch, "aaa", "bbb" ) );
// 暗号化されていないテキストを含むch変数があるため、
temp; // tempは暗号化されていない式を含むことになる
2番目の選択肢よりも3番目の選択肢のほうがわかりやすいので、使用したくなるかもしれません。この場合、chやtempのような変数は使い終わったら、クリアするよう注意してください。 そうでなければ、せっかくスクリプトを暗号化して他の人が読めないようにしても、他の人は変数の内容を見ることができるようになってしまいます。