Boucles "for"

Boucles "for" - Delphi/Pascal - Programmation

Marsh Posté le 23-08-2008 à 13:50:31    

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

Reply

Marsh Posté le 23-08-2008 à 13:50:31   

Reply

Marsh Posté le 25-08-2008 à 10:42:19    

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
Reply

Marsh Posté le 25-08-2008 à 12:42:51    

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:

Reply

Marsh Posté le 26-08-2008 à 18:40:35    

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


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

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed