voila c'est une pile qui prend une fonction pour pusher une valeur, une pour les array, une pour poper, une pour pusher et poper en même temps, enfin bref voila quoi lisez c'est tout con mais faut juste y penser (il est parfaitement inutile puisque qu'on peut toujours faire autrement mais c'est parfois plus cours, clair et rapide à taper avec la pile même si elle ne servira jamais avec 100 valeurs dedans)
l'exemple est dans l'UDF même s'il est simplet
global $ASM_Like_Pile[1] = [0]
func Push($val)
redim $ASM_Like_Pile[ubound($ASM_Like_Pile) + 1]
$ASM_Like_Pile[0] += 1
$ASM_Like_Pile[ubound($ASM_Like_Pile) - 1] = $val
EndFunc
func Pop()
if ubound($ASM_Like_Pile) <= 1 then return 0
$val = $ASM_Like_Pile[ubound($ASM_Like_Pile) - 1]
redim $ASM_Like_Pile[ubound($ASM_Like_Pile) - 1]
$ASM_Like_Pile[0] -= 1
return $val
EndFunc
func PopAll()
$val = $ASM_Like_Pile
dim $ASM_Like_Pile[1]
$ASM_Like_Pile[0] = 0
return $val
EndFunc
func PoPush($val)
$t = pop()
push($val)
return $t
EndFunc
func PushA($array)
for $i = 0 to ubound($array) - 1
push($array[$i])
Next
EndFunc
func PileRead($offset = - 1)
if ubound($ASM_Like_Pile) < $offset then return 0
if $offset <= 0 then return $ASM_Like_Pile[ubound($ASM_Like_Pile) - 1]
return $ASM_Like_Pile[$offset]
EndFunc
func Upile()
return $ASM_Like_Pile[0]
EndFunc
func Dump()
return $ASM_Like_Pile
EndFunc
func PileExemple()
while true
push(InputBox("", "saisissez n'importe quoi")) ; on ajoute la saisie de l'utilisateur en haut de la pile
if Pileread() = "" then ExitLoop ; on lit sans détruire la valeur en haut de la pile (si c'est rien on quitte)
msgbox(0,"","vous avez saisie " & Pop()) ; on affiche (en détruisant) la valeur en haut de la pile
WEnd
popall() ; on pop tout pour netoyer la pile
EndFunc