H2135 La boucle FOR ou WHILE s'exécute zéro fois - supprimée (Delphi)
Remonter à Messages d'erreur et d'avertissement (Delphi)
Le compilateur a déterminé que la structure de boucle spécifiée ne s'exécutera jamais, ainsi il va l'enlever comme optimisation. Exemple :
program Produce; (*$HINTS ON*) var i: Integer; begin i := 0; WHILE FALSE AND (i < 100) DO INC(i); end.
Le compilateur détermine que 'FALSE AND (i < 100)' est toujours évaluée à FALSE, il en conclut que la boucle ne sera pas exécutée.
program Solve; (*$HINTS ON*) var i: Integer; begin i := 0; WHILE i < 100 DO INC(i); end.
La solution à cette information est de vérifier que l'expression booléenne utilisée pour le contrôle des instructions while n'est pas toujours à FALSE. Dans les boucles for, vous devez vérifier que (limite haute - limite basse) >= 1.
Vous pouvez recevoir cet avertissement si une boucle FOR incrémente sa variable de contrôle d'une valeur appartenant à l'étendue d'un Longint à une valeur qui sort de l'étendue d'un Longint. Par exemple :
var I: Cardinal; begin For I := 0 to $FFFFFFFF do ...
Cela provient d'une limite du compilateur que vous pouvez résoudre en remplaçant la boucle FOR par une boucle WHILE.