気にしないでください。私はそれを理解しました - 関数の 1 つに、スクリプトの開始時に評価される Eval() がありました。
シンプルな GUI プロトタイプを書いています。
コンボ ボックス内のテーブルのリスト、テーブルを追加/開くボタン、現在選択されているテーブルの列名を含むフィルター列ボックス。
最初の実行ですべてが動作します - テーブルが切り替えられ、列が表示され、コンボ ボックスはテーブルの追加、閉じ、または名前の変更に反応します。
そのためにテーブルへのサブスクリプションを使用しています。
GUIウィンドウを閉じてスクリプトを再度実行すると、シンボルが定義されていないことに関連するランダムなエラーが発生します(新しいインスタンスが実行中です)。起動時に、以前のインスタンスのコードがランダムな場所で実行され続け、それらのコードで定義されている変数が見つからないようです。
エラーポップアップで[OK]をクリックして再度実行すると、スクリプトは正常に動作します。
これが私のウィンドウの onClose 関数です:
onWindowCloseExpr = Expr( Write("\!nRunning on window close expression"); For Each({_dt, _index}, (data:tablesListAA << Get Values), Close(_dt, NoSave); ); Unsubscribe to Data Table List( aSub ); Clear Symbols(); Stop(); );
問題のトラブルシューティング中に、スクリプトが停止してすべてがクリアされることを確認するために、Clear Symbols() と Stop() を追加しました。
何が起こっているのか、どうすれば修正できるのか、何か分かりますか?