暗号化されたスクリプトは、スクリプトがそれ自体の一部を式から文字列に変換しようとすると、暗号化されていないスクリプトと同じようには動作しないことがあります。これは、スクリプトの暗号化を守るために必要です。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);";
/* 暗号化されていないテキストを含むch変数があるため、
tempは暗号化されていない式を含むことになる */
temp = Parse( Substitute( ch, "aaa", "bbb" ) );
temp;
2番目の選択肢よりも3番目の選択肢のほうがわかりやすいので、使用したくなるかもしれません。この場合、chやtempのような変数は使い終わったら、クリアするよう注意してください。そうでなければ、せっかくスクリプトを暗号化して他の人が読めないようにしても、他の人は変数の内容を見ることができるようになってしまいます。