Page 1 sur 1

[UDF] Array avec des ID Fixes

Posté : mar. 07 févr. 2012 22:29
par matwachich
Salut à tous!
Encore un UDF!!!

Celui là, je l'ai utilisé massivement dans Scite Project Manager (que je développe toujours)!

C'est des fonctions pour gérer un Array spécial:
Quand on y ajoute des éléments, et ensuite qu'on en supprime, même si ces éléments sont au milieux des autres, ces derniers ne change pas d'ID, c'est à dire, il ne sont pas décalés!

Vous allez me dire: à quoi ça peut bien servir!!!??? :roll: :?
Eh bien par exemple, vous utiliser un TreeView, et vous voulez associer à chaque item des données, il n'y a pas de fonction pour associer d'autre données que un Nombre avec un TreeViewItem (_GuiCtrlTreeView_SetItemParam), alors vous stockez ces données dans un Array, et le nombre associé au TreeViewItem sera l'ID des données dans le array.

Seulement voila! Quand on supprime un TreeViewItem, et qu'on supprime l'élément du Array associé, et bien les éléments qui se trouvent après sont décalé! Et donc, le nombre associé au TreeViewItem devient donc invalide!

Ce petit UDF est donc là pour ça!
Il y a un exemple commenté (en anglais :? )

Re: [UDF] Array avec des ID Fixes

Posté : mar. 07 févr. 2012 23:03
par Tlem
C'est une façons de voir les choses, mais il faut bien comprendre que le tableau sera rechargé au démarrage suivant, donc le fait de gérer la suppression des éléments n'est pas indispensable. L'élément peut tout simplement être vidé et le traitement devra tenir compte des éléments vide ou non. ;)

Mais bon, si cela vous convient, il est difficile de juger des gouts et des couleurs. :mrgreen:

Re: [UDF] Array avec des ID Fixes

Posté : mar. 07 févr. 2012 23:14
par matwachich
J'ai pas bien compris ce vous voulez dire par "sera rechargé au démarrage suivant"?
Au fait, le truc ici, c'est que il gère tout seul le fait que:
Si il y a un emplacement vide au MILIEU du array, alors on stock nous nouvelles données dans cet emplacement
Si non, on ajoute un emplacement nouveau.

C'est quelque sorte plus optimiser, et le sale boulot est fait une bonne fois pour toute!

En plus, c'est assez flexible je trouve, car on peut créer des arrays à 2 dimensions (avec autant de ... comment on l'appel... le x rouge $Array[..][x])

Re: [UDF] Array avec des ID Fixes

Posté : mar. 07 févr. 2012 23:29
par Tlem
Ce que je veut dire, c'est que le tableau est généré par la lecture du TreeView (n'est-ce pas ?). Donc si votre programme est fermé puis relancé avec chargement du projet, le tableau sera de nouveau reconstruit à partir du TreeView ...

A moins que vous n'ayez fait l'inverse ... :roll:

Re: [UDF] Array avec des ID Fixes

Posté : mar. 07 févr. 2012 23:41
par matwachich
C'est pas tout à fait ça:
- Le tableau est générer lors de la création d'Items dans le TreeView, à chaque item donc, j'associe des données (chemin du fichier, id du projet, et surtout type d'item: projet, dossier, fichier)
- Comme ça, quand un événement est généré par le tree view, il me suffit de récupérer l'item concerné, de prendre son Param (_GuiCtrlTreeView_GetItemParam) et prendre les données concernant l'item dans le array

- J'ai procéder de cette manière, car je veux que quand un projet est fermé, toutes les données le concernant soient effacées (mémoire), mais si j'efface des item du array, alors les id (param) associés avec mes TreeViewItems deviennent invalides!

PS: ne cherchez pas cet UDF dans les source de Scite Project Manager, c'est bien cette méthode que j'ai utilisé, mais cet UDF (que je vien de faire). Car c'est ce problème au quel j'ai été confronté avec SPM qui m'a donné cette idée.

PS2: Vous pouvez déjà tester SPM, il suffit de récupérer les sources depuis le SVN de google codes, et de lancer SPM.au3, le code et commenté et on peut déjà:
- Créer, sauvegarder, ouvrir des projets
- Y ajouter des fichiers, dossiers, et les supprimer
- Glisser déposer les fichiers d'un dossier à un autre
- Il y l'historique des derniers dossiers ouverts
...
Et il reste encore du boulot!!!

Re: [UDF] Array avec des ID Fixes

Posté : mer. 08 févr. 2012 00:30
par matwachich
@Tlem: il faut re-télécharger l'archive, j'ai modifier le code pour ajouter une fonction très importante: _FixArray_Set (modifier les valeurs enregistrées)

Re: [UDF] Array avec des ID Fixes

Posté : mer. 08 févr. 2012 00:55
par Tlem
Vous avez fait un choix dans la gestion des éléments de votre TreeView. Je n'exposais qu'un point de vue différent, car votre gestion m'a paru complexe alors qu'elle pourrait être plus simple. Ceci dit, c'est vous qui codez, donc vous le faites selon votre créativité. La finalité, c'est que le projet aboutisse. :D