Page 1 sur 1

DeleteElement dans une boucle ForEach/Next

Publié : dim. 20/juin/2004 13:06
par Ombres
Voila, si je fait juste ca:

Code : Tout sélectionner

NewList test.l()

For i = 0 To 5
  AddElement(test())
  test() = i
Next

ForEach test()
  If test()=2
    DeleteElement(test())
  EndIf
  Debug test()
Next
Je me retrouve avec:
0
1
1 => Un deuxieme 1, c'est normal car DeleteElement passe à l'élément précédent
3
4
5

J'ai cherché un moment comment supprimer un élément sans probleme, et je suis arrivé à ca:

Code : Tout sélectionner

NewList test.l()

For i = 0 To 5
  AddElement(test())
  test() = i
Next

ForEach test()
  If test()=2
    a = ListIndex(test())
    DeleteElement(test())
    If a And NextElement(test()) = 0
      Break
    EndIf
  EndIf
  Debug test()
Next
Ce qui me donne bien:
0
1
3
4
5
Mais c'est pas très pratique à utiliser... ca serai bien que DeleteElement fonctionne différement dans un boucle ForEach (qu'il passe a l'élément suivant au lieu du précédent et que s'il n'y a pas d'élément suivant il quitte la boucle) , de facon a ce que le premier code donne le résultat du 2eme :?

Publié : dim. 20/juin/2004 15:29
par Anonyme2
Jettes un oeil au message que j'ai posté il y a quelque temps, car Fred doit pouvoir améliorer

http://purebasic.hmt-forum.com/viewtopic.php?t=382