沒關係,我已經找到原因了——其中一個函數有 Eval() 函數,它會在腳本啟動時立即執行該函數。
我正在編寫一個簡單的圖形使用者介面原型:
組合方塊中列出表格,新增/開啟表格的按鈕,以及顯示目前所選表格列名的篩選列框。
第一次運行時一切正常-表格切換正常,列顯示正常,組合框會對表格的新增、關閉或重新命名做出反應。
我使用表訂閱來實現這一點。
關閉圖形介面視窗後,我再次啟動腳本,卻遇到了一些與符號未定義相關的隨機錯誤(這是一個新運行的實例)。就好像腳本啟動時會隨機執行先前實例中的程式碼片段,而找不到這些片段中定義的變數。
我在錯誤彈出視窗中點擊“確定”並再次運行——腳本運行正常。
這是我的視窗關閉函數:
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() 函數,以確保腳本停止運行並清除所有內容。
知道發生了什麼以及如何解決嗎?