Aussi, une petite particularité du Ti-Basic, de mémoire "temp->pos[dim(pos)+1]" est plus rapide que ton appel à augment.
mais ça fait une erreur de dimension non ?
En règle générale il faut éviter de mettre une expression complexe dans l'une des bornes d'un "for" : ici, ton "dim(str)-len" est recalculé à chaque tour de boucle.
Exact. Donc :
search(str,substr)
Func
//str = chaine
//substr = chaine à trouver
Local len,temp,pos,len2 //len = taille de substr, la chaine à trouver, temp = variable temporaire
{}->pos //pos = liste de sortie qui contient toutes les positions où substr apparait
dim(substr)->len
dim(str)-len->len2
For temp,1,len2
If mid(str,temp,len)=substr
augment(pos,{temp})->pos
EndFor
pos
EndFunc