Crystal Reports  

Eviter les boucles infinies (syntaxe Crystal)

Il existe un mécanisme de sécurité pour éviter le blocage du traitement d'un état à cause d'une boucle infinie. Pour chaque évaluation de formule, le nombre maximum d'évaluations de condition de boucle est de 100 000. Par exemple :

Local NumberVar i := 1;
While i <= 200000 Do
(
   If i > {movie.STARS} Then
      Exit While;
   i := i + 1
);
20

Si {movie.STARS} est supérieur à 100 000, la condition de boucle (i <= 200000) sera évaluée un plus grand nombre de fois que le maximum autorisé et un message d'erreur s'affichera. Sinon la boucle est correcte.

Remarque   Le mécanisme de sécurité s'applique au niveau de la formule, et non pour chaque boucle individuelle. Par exemple :
Local NumberVar i := 1;
For i := 1 To 40000 Do
(
   Sin (i);
);
While i <= 70000 Do
(
   i := i + 1;
)

La formule ci-dessus déclenche aussi le mécanisme de sécurité puisque le nombre de 100 000 fait référence au nombre total d'évaluations de condition de boucle de la formule et cette formule comportera 40001 +70001 évaluations de ce type.

Voir aussi

Boucles For | Boucles While