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.
[UDF] StackStructure : Intégrer des piles dans Autoit.
Règles du forum
- Merci de consulter la section "Règles du forum" et plus particulièrement "Règles et Mentions Légales du site autoitscript.fr" avant d'écrire un message.
[UDF] StackStructure : Intégrer des piles dans Autoit.
- Fichiers joints
-
- StackStructure.au3
- (8.12 Kio) Téléchargé 291 fois
-
- Exemple.au3
- (753 Octets) Téléchargé 284 fois
Modifié en dernier par L4crymal le ven. 30 déc. 2011 18:52, modifié 1 fois.
- PandiPanda
- Membre émérite
- Messages : 656
- Enregistré le : mar. 19 juil. 2011 14:03
- Localisation : Bruxelles
- Status : Hors ligne
Re: [UDF] StackStructure : Intégrer des piles dans Autoit.
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;
affiche ceci;
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.
j'ai un peu survolé votre "UDF" et des détails sont un peu "étrange", notamment ceci;
1)
Code : Tout sélectionner
Return $val
SetError(0)
2)
Code : Tout sélectionner
StackCreate($size = 10)
je pensais que sa principale utilisation par rapport à un tableau est que c'etais 'dynamique' ?
3)
Code : Tout sélectionner
StackPop(ByRef $avArray)
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)
Ensuite,$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
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.
La seule moralité qui tienne dans un monde cruel est la chance. Impartiale. Équitable. Vraie
- Tlem
- Site Admin
- Messages : 11773
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: [UDF] StackStructure : Intégrer des piles dans Autoit.
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 :
Par exemple pour initialiser une pile :
Code : Tout sélectionner
Global $Pile
Code : Tout sélectionner
$Pile = ""
Thierry
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Re: [UDF] StackStructure : Intégrer des piles dans Autoit.
@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
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