Laissez tomber, j'ai trouvé : une des fonctions contenait Eval() qui s'exécutait dès le démarrage du script.
Je suis en train d'écrire un prototype d'interface graphique simple :
Liste des tables dans une zone de liste déroulante, bouton pour ajouter/ouvrir une table et zone de filtre avec les noms de colonnes de la table actuellement sélectionnée.
Tout fonctionne correctement dès le premier lancement : les tables sont permutées, les colonnes s'affichent et la liste déroulante réagit à l'ajout, à la fermeture ou au renommage des tables.
J'utilise un système d'abonnement aux tables pour cela.
Après avoir fermé la fenêtre de l'interface graphique et relancé le script, je rencontre des erreurs aléatoires liées à des symboles non définis (il s'agit d'une nouvelle instance). C'est comme si, au démarrage, le script exécutait des portions de code à des endroits aléatoires, provenant de l'instance précédente, sans trouver les variables définies dans ces portions de code.
Je clique sur OK dans la fenêtre d'erreur et je relance le script ; il fonctionne normalement.
Voici ma fonction onClose de fenêtre :
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(); );
J'ai ajouté les fonctions Clear Symbols() et Stop() lors de la tentative de résolution du problème, afin de m'assurer que le script s'arrête et que tout est effacé.
Vous avez une idée de ce qui se passe et comment y remédier ?