Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2707 connectés 

  FORUM HardWare.fr
  Programmation
  Delphi/Pascal

  Boucles "for"

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Boucles "for"

n°1776480
konglihong
Posté le 23-08-2008 à 13:50:31  profilanswer
 

Bonjour,
 
J'utilise une boucle "for" pour récupérer la valeur de chacun des éléments d'un tableau dynamique. J'utilise donc ce code :
 

for i := 0 to Length(maListe) - 1 do begin
   e := maListe[i];
   // etc..
end;


 
Ca marche bien SAUF dans le cas ou la liste est vide - auquel cas, la boucle est exécutée une fois alors même que i est négatif. Dans ce cas là, évidemment ça créé une erreur. Est-ce normal ? Ou est ce qu'il y a quelque chose qui m'échappe ? La doc de Delphi indique que la boucle ne devrait être exécutée que si i est <= à la valeur maxi. Or là ce n'est pas le cas puisque i est négatif quand la liste est vide.
 
Je pourrai vérifier que i est négatif au début de la boucle et mettre un break, mais j'aimerai trouver une solution plus élégante. Si quelqu'un a une idée, ou pouvait m'indiquer une meilleure façon de faire ça, ce serait nickel.
 
Merci

mood
Publicité
Posté le 23-08-2008 à 13:50:31  profilanswer
 

n°1776985
rengzehn
Posté le 25-08-2008 à 10:42:19  profilanswer
 

En jouant avec les while ou repeat

 

i:=0;
while (i < Length(maListe)) do
begin
// code
inc(i)
end;

 

ps : tu es sur que quand la liste est vide Length(maListe) est bien défini et vaut bien 0 ? Tu as initialisé ton tableau dynamique avant ?


Message édité par rengzehn le 25-08-2008 à 10:59:17
n°1777064
konglihong
Posté le 25-08-2008 à 12:42:51  profilanswer
 

Oui, en fait je me suis rendu compte que c'était une erreur de ma part. J'utilisais un "word" comme indice de boucle, ce qui fait que quand la liste était vide, i n'était pas négatif mais vallait 65535 :sarcastic: J'ai donc utilisé un Integer à la place et du coup ça marche même quand la liste est vide :jap:

n°1777942
Nethacker
rule televisions, rule minds
Posté le 26-08-2008 à 18:40:35  profilanswer
 

en déclarant un integer sans lui attribuer de valeur il prend 65535


---------------
God is one, not 2 nor 3!

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Delphi/Pascal

  Boucles "for"

 

Sujets relatifs
insérer trois bouclesles boucles et affichage de motif ...
C++, boucles, compilo, et optimisationoptimisation de boucles
[resolu]Boucles sur des requetes MySQLBoucles et performances [ résolu ]
Boucles imbriquées en XSLconcaténation de résultat de boucles (VB)
Problème de création de boucles[RESOLU]PHP et MySQL problème avec des boucles!!
Plus de sujets relatifs à : Boucles "for"


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)