Cette petite astuce est pour retrouver un timer par son nom de manière simple et rapide.
La commande timers retourne une liste "complexe" des timers.
Vous pouvez retrouver un timer (du moins sa position dans la liste) avec lsearch en forçant l'index de recherche à la bonne position, à savoir 2 (le nom du timer est le 3ème élément, la liste commence à 0):
Bien entendu, vous pouvez utiliser toutes les autres options de lsearch pour par exemple ressortir une liste des timers en se basant sur vos critères de recherche.
Cas pratique:
Dans un script, j'ai besoin de réinitialiser un compteur, voire de le supprimer s'il est mis à 0.
A rapprocher de Tester l'existence d'un timer / utimer et récupérer son ID qui permet de rechercher un timer par la commande qu'il doit exécuter.
La commande timers retourne une liste "complexe" des timers.
Vous pouvez retrouver un timer (du moins sa position dans la liste) avec lsearch en forçant l'index de recherche à la bonne position, à savoir 2 (le nom du timer est le 3ème élément, la liste commence à 0):
tcl
set t_idx [lsearch -index 2 [timers] montimer]
Bien entendu, vous pouvez utiliser toutes les autres options de lsearch pour par exemple ressortir une liste des timers en se basant sur vos critères de recherche.
Cas pratique:
Dans un script, j'ai besoin de réinitialiser un compteur, voire de le supprimer s'il est mis à 0.
tcl
proc updatetimer {tname delay} {
if {[lsearch -index 2 [timers] $tname]!=-1} {
killtimer $tname
}
if {$delay > 0} {
list [timer $delay [list maproc with params] 1 $tname]
}
}
A rapprocher de Tester l'existence d'un timer / utimer et récupérer son ID qui permet de rechercher un timer par la commande qu'il doit exécuter.