Simulation de tableau dans mirc avec les hashtable

Soyez le premier à donner votre avis sur cette source.

Vue 3 868 fois - Téléchargée 92 fois

Description

Il y a deux script qui font a peu près la même chose.
Dans les deux cas, les scripts simulent un tableau à deux dimensions en utilisant les hashtable et les tokens.
Le même jeu d'alias de base est disponible dans les deux, préfixé par le type de tableau voulut.
lin2DTableMan.mrc gère un tableau sous forme d'une seule entrée. Les tokens utilisés découpent d'abord en colonne puis en ligne. Ce découpage est utilisé pour accélérer la fonction de recherche.
htabTableMan.mrc gère un tableau sous forme d'une entrée par ligne. Les tokens utiliss découpent uniquement les colonnes. Une enrée supplémentaire aux lignes indique le nombre de ligne.
Les fonctions fournies sont l'ajout de lignes (qui peut créer le tableau), l'ajout de colonnes, l'interrogation et la définition de la valeur d'une cellule, la recherche d'un texte sur une colonne, l'interrogation des dimensions, le retrait de ligne et le retrait de colonne.
Pour le tableau une entrée par ligne, une méthode de tri ascendant est aussi disponible.

La description des alias et leurs définition sont commentés dans les fichiers.

Source / Exemple :


;Création d'un tableau de %l lignes et %c colonnes dont les cellules sont initialisées à n°ligne.n°colonne
;En utilisant htabTableMan.
;La table de hashage est supposée existée.
;La variable %htab est initialisé au nom de la table de hashage.
;La variable %table est initialisée au nom du tableau.
;%l et %c sont positifs non nuls.

;Vidage du tableau existant de même nom pour partir à 0.
while ($htabTableRowCount(%htab, %table) > 0) {
  ;Retire la dernière ligne, exécution la plus rapide.
  htabTableRemRow %htab %table $htabTableRowCount(%htab, %table)
}
; Pour y de 1 à %l
var %y = 1
while (%y <= %l) {
  ;Ajouter la ligne %y.
  htabTableAddRow %htab %table %y
  ; Création des colonnes lors de la création de la première ligne.
  if (%y == 1) {
    ; Pour x de 2 à %c
    var %x = 2
    while (%x <= %c) {
      ; Ajout de la colonne %x
      htabTableAddCol %htab %table %x
      inc %x
    }
    ; Fin pour
  }
  ; Pour x de 1 à %c
  var %x = 1
  while (%x <= %c) {
    ;Définition de la valeur de la cellule (%y, %x).
    htabTableSetVal %htab %table %x %y %x $+ . $+ %y
    inc %x
  }
  ;Fin pour
  inc %y
}
;Fin pour

Exemple d'alias pour "error"
alias error {
  echo -a (error) $1-
}

Conclusion :


Pour tout question sur l'utilisation, poser la question.
De préférence en commentaire ou sur le salon à MyGoddess
Pour toute proposition de code à ajouter, me la soumettre, je serais ravis de complèter les fonctionnalités.
Depuis le temps que j'utilise ces scripts, je n'ai jamais eu de problème donc pas de bugs connus.

Codes Sources

A voir également

Ajouter un commentaire Commentaires
Messages postés
64
Date d'inscription
mercredi 24 juillet 2002
Statut
Membre
Dernière intervention
26 novembre 2009

Tu a tout compris PaDa, c'est limité à deux dimmensions, on a rarement besoin de plus de dimensions. Mais tu peux cependant étendre les fonctionnalités en gerant par toi même la troisième dimension.
Et les tableaux imbriqués sont encore moins géré a la base. C'est pas vraiment l'utilité de base. Puisque tableaux imbriqués et plus de deux dimensions, ca commence a devenir plus complexe.
Mais une autre implémentation de mes algorithme permettrais du multidimmensionnel. J'y ai pensé quand j'ai posté.
Et après pour l'imbrication, tu peux mettre les noms des tableaux imbriqués dans les cellules et faire l'accès come ca ;)
Messages postés
1804
Date d'inscription
mardi 15 juillet 2003
Statut
Membre
Dernière intervention
22 septembre 2009
5
Si je pige l'alias, c'est pas extensible a plus de 2 dimensions ? ou a des imbrications ?
Ca a le mérite d'être clair sinon ;) Une bonne idée pour les débutants, mm si j'ai pas regardé en détail

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.