Page 1 sur 1

foreach()

Publié : lun. 07/mars/2005 8:47
par Anonyme2
Ca serait possible d'avoir un step negatif avec cette commande pour commencer à partir de la fin de la liste ?

Code : Tout sélectionner

Foreach ListeChainee() step -1
    ; démarre la scrutation à partir du dernier élément de la liste
next
ou bien une commande directe ForeachReverseElement() (pas trouvé mieux comme nom)

Ainsi qu'un flag pour la commande ResetList() qui Change l'index de l'element courant et le place après le dernier element de la liste. Donc il n'y a plus d'éléments de valides. C'est particulierement utile en combinaison avec avec 'While' et PreviousElement().

Code : Tout sélectionner

ResetList(ListeChainee(), #PB_LastElement)
While PreviousElement(ListeChainee())
wend

Publié : mar. 08/mars/2005 21:19
par Le Soldat Inconnu

Code : Tout sélectionner

ResetList(ListeChainee(), #PB_LastElement)
ou plus simplement LastElement( :lol:

Code : Tout sélectionner

LastElement(ListeChainee()) 
Repeat

Until PreviousElement(ListeChainee()) 

Publié : mer. 09/mars/2005 7:16
par Anonyme2
Le Soldat Inconnu a écrit :

Code : Tout sélectionner

ResetList(ListeChainee(), #PB_LastElement)
ou plus simplement LastElement( :lol:

Code : Tout sélectionner

LastElement(ListeChainee()) 
Repeat

Until PreviousElement(ListeChainee()) 
Que se passe-t-il si la liste est vide ?
Il faut adapter le code (repeat) pour le cas d'une liste vide. Ca fonctionne aussi tout comme le while (sans le ResetList) en adaptant le code.
C'est pour ça que le foreach est bien, pas à se soucier de l'état de la liste. Le foreach est codé en asm comme le while NextelEment() wend

Resetlist place l'index avant le 1er élément sinon le while ne fonctionne pas non plus pour le 1er élément.
Il faut l'équivalent du Resetlist mais pour la fin de liste, avec l'index qui pointe après le dernier élément et pas sur le dernier élément.
Une commande directe serait mieux mais l'équivalent du ResetList est important car il est aussi possible de scruter la liste à partir de la fin sans forcément remonter jusqu'au début.

Publié : mer. 09/mars/2005 12:14
par Le Soldat Inconnu
exact, j'avais pas pensé au coup de la liste vide :?