Page 1 sur 1
[UDF] StackStructure : Intégrer des piles dans Autoit.
Posté : ven. 30 déc. 2011 16:36
par L4crymal
Bonjour tout le monde, aujourd'hui j'avais besoin d'une librairie rapide et efficace intégrant les piles dans Autoit.
C'est chose faite, et j'en profite pour vous la partager.
Pour savoir ce qu'est une pile:
http://fr.wikipedia.org/wiki/Pile_(informatique)
En gros une pile est un tableau à 1 dimension où l'on peut lire ou écrire seulement dans la dernière case.
Ça peut par exemple servir dans tous les programmes qui propose une fonction "Annuler, CTRL+Z" la pile est dépilé à ce moment là.
Cela peut être très pratique dans certains cas voir indispensable (comme le mien)
N'hésitez pas à rapporter les bugs et à proposer vos améliorations.
Re: [UDF] StackStructure : Intégrer des piles dans Autoit.
Posté : ven. 30 déc. 2011 17:35
par PandiPanda
Bonjour,
j'ai un peu survolé votre "UDF" et des détails sont un peu "étrange", notamment ceci;
1)
à savoir le "setError(0)" apres un return ne sert strictement à rien ^^
2)
On doit donc donné une taille prédéfinie à une pile ?
je pensais que sa principale utilisation par rapport à un tableau est que c'etais 'dynamique' ?
3)
Vous avez donc 2 tailles différentre une taille "Logique" et une taille "réelle", cependant pourquoi ne pas simplement l'enlever? Car on peux facilement atteindre une valeur qui devrai normalement "ne plus exister".
Sans oublier que on utilise de l'espace pour rien, puisque si on fait un 'pop' c'est qu'on ne veux plus de cette valeur dans la pile ! (à savoir dans le tableau)
4) ce code ci;
Code : Tout sélectionner
#Include <Array.au3>
Local $array=StackCreate(3)
For $i=1 To 3
StackPush($array,$i)
Next
_ArrayDisplay($array)
affiche ceci;
$array[0]=4 ; pourtant il n'y a que 3 element, d'ou vien ce 4 ??
$array[1]=1 ; le premier element ne devrai t'il pas etre 3 ? etant donné que c'est une pile ...
$array[2]=2
$array[3]=3
Ensuite,
j'ai vu le "StackPop(ByRef $avArray)" qui renvoi bien le 3 comme "premier element" mais ca me parait bisarre
En suivant cette logique, en fait le dernier element devient le premier, mais je voit pas ou sort cette logique de "Pile" en soit.
Re: [UDF] StackStructure : Intégrer des piles dans Autoit.
Posté : ven. 30 déc. 2011 18:07
par Tlem
L'intérêt de cet UDF est sans doute subtil, mais en travaillant directement en chaîne, ce serai sans doute plus simple !
Par exemple pour initialiser une pile :
Pour la vider :

Re: [UDF] StackStructure : Intégrer des piles dans Autoit.
Posté : ven. 30 déc. 2011 21:33
par L4crymal
@PandiPanda
1) Merci c'était juste une erreur.
2) Non c'est une taille que l'on définit comme "taille max" mais pour éviter de crasher quand on dépasse cette taille, la fonction PUSH peut créer des cases en + mais ça peut ralentir le programme c'est pour ça qu'il est intéressant de fixer une taille max si on veut un programme + rapide.
3) C'est toujours une question de rapidité, supprimé le contenu d'une case avant de déplacer le curseur ralentit le programme (mais vraiment de peu), mais j'ai ajouté un paramètre pour supprimé le contenu de la case libéré.
4) C'est juste le "curseur" de la pile, il pointe vers la "prochaine case" et non vers la dernière case. Mais ça c'est un choix perso, j'aurai pu faire autrement mais il n'y a aucune différence.
J'ai mis à jour l'UDF