foreach()

Vous avez une idée pour améliorer ou modifier PureBasic ? N'hésitez pas à la proposer.
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

foreach()

Message 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
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Message 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()) 
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

Message 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.
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Message par Le Soldat Inconnu »

exact, j'avais pas pensé au coup de la liste vide :?
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
Répondre