Bonjour,
Il y a un ordre qui redonne momentanément la main au traitement des messages, c'est Application.ProcessMessages. C'est non seulement utile pour un éventuel timer mais aussi pour garder une certaine réactivité de l'application (réponse aux boutons par exemple).
Mais ici, je ne suis pas sûr que j'opterais pour un Timer. Avec un simple compteur "j" incrémenté dans le corps de la boucle principale et remis à 0 tous les 10_000_000 de pas provoquant alors l'inversion de couleur, nous obtenons à moindre coût une information de progression.
Je ne suis pas sûr que l'inversion de k soit la meilleure approche. Si le compilateur ne s'aperçoit pas que k est 1 ou -1, il va faire une division flottante classique c'est à dire une multiplication de k par 1/x.
On peut espérer éviter la multiplication flottante, donc gagner un peu de temps, en écrivant un truc du genre :
Code:
1 2 3 4 5 6 7 8
| w := 1.0;
i := 1;
repeat
i += 2;
w := w - 1 / i;
i += 2;
w := w + 1 / i;
until i >= 2000000001; |
Je crois que le nombre de termes est à augmenter de 1 (w non nul initialement).
Salutations