Non preoccuparti, ho capito: una delle funzioni aveva Eval(), che effettuava la valutazione proprio all'avvio dello script.
Sto scrivendo un semplice prototipo di GUI:
Elenco delle tabelle in una casella combinata, pulsante per aggiungere/aprire la tabella e casella di filtro con i nomi delle colonne della tabella attualmente selezionata.
Tutto funziona al primo avvio: le tabelle vengono cambiate, le colonne vengono visualizzate, la casella combinata reagisce all'aggiunta, alla chiusura o alla ridenominazione delle tabelle.
Per questo utilizzo l'abbonamento alle tabelle.
Dopo aver chiuso la finestra dell'interfaccia grafica e riavviato lo script, ricevo errori casuali relativi a simboli non definiti (è una nuova istanza in esecuzione). Come se all'avvio continuasse a eseguire pezzi di codice in posizioni casuali dall'istanza precedente, senza trovare le variabili definite in quei pezzi.
Faccio clic su OK quando compare il messaggio di errore e lo eseguo di nuovo: lo script funziona normalmente
Ecco la mia finestra sulla funzione Close:
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(); );
Ho aggiunto Clear Symbols() e Stop() mentre cercavo di risolvere il problema, per assicurarmi che lo script si interrompesse e che tutto venisse cancellato.
Avete idea di cosa stia succedendo e di come risolvere il problema?