Incrémenter une variable de type entier dans une boucle
J'en ai "je" qui est une variable de type entier et je voudrais faire une boucle qui incrémente le "je" de 40000 à 90000 ajouter 1000 à chaque fois. Chaque Résultat apparaît dans une liste déroulante.
Exemple: 40000 - 41000 - 42000 - 43000 - ... - 88000 - 89000 - 90000
Mon code est le suivant:
var i:integer;
begin
for i:= 40000 to 90000 do
begin
ComboBox1.AddItem(IntToStr(i), nil); //until here the code works
Inc(i, 1000);
end;
Avez-vous des suggestions?
- Bien que je et nombreux sont ceux qui connaissent la nature de ce type d'erreur que vous obtenez, vous devriez toujours nous dire quel est le message d'erreur.
- S'il vous plaît, lire un message d'erreur en entier et de consulter (F1) la documentation de la résolution. Il précise ce que vous ne pouvez pas modifier le compteur de
for
boucle.
Vous devez vous connecter pour publier un commentaire.
Vous ne pouvez pas modifier la pour la variable de boucle à l'intérieur de la boucle.
Ce que vous voulez, c'est ceci:
Mais! C'est plutôt inefficace. Vous devriez envisager de
while
option pour ma réponse, mais Ken me battre pour elle. De toute façon, je pense que ça dépend de la "sous-jacent" logique. Parfois, lefor
boucle pourrait être la plus naturelle. (On pourrait avoir le sentiment que lawhile
appraoch essaie de simuler quelque chose que le programmeur doit vraiment prouver au moment de la conception.)L'alternative à @AndreasRejbrand de la solution est un
while
boucle:ou "repeat":
<= 90000
est un peu moins compliqué pour certaines personnes.<= 90000
plutôt que< 90001
qui fait la même chose et n'a pas nécessairement de la matière, autres que des raisons de lisibilitéLe compilateur interdit de modifier la variable de boucle.
Il y a un moyen pour inclure le support pour un
for..step
boucle.Vous devez avoir un Delphi version qui prend en charge les génériques (Delphi 2009+).
Viens de faire cette déclaration dans un utilitaire unité:
Et de l'utiliser comme ceci:
En Delphi 2005, les méthodes sur les enregistrements ont été ajoutées en plus de la
for in
énumération.Sachant cela, il est possible de mettre en œuvre une autre boucle for avec un pas de fonctionnalité.
Et maintenant, vous pouvez écrire :
De creuser dans le fonctionnement interne de cet exemple, voir
plus de-plaisir-avec-des agents recenseurs
.Il est facile à mettre en œuvre un
.StepReverse
version des deux exemples ci-dessus, et je vais laisser cela comme un exercice pour le lecteur intéressé.Nous pouvons également faire une boucle de 40 à 90 et de multiplier l'indice de 1000