Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

SIMULATION DE TABLEAU DANS MIRC AVEC LES HASHTABLE


Information sur la source

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

  • ;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-
  • }
;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.
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Commentaires et avis

signaler à un administrateur
Commentaire de PaDa le 03/05/2006 23:30:23

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

signaler à un administrateur
Commentaire de BaFM le 03/05/2006 23:50:37

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 ;)

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

Hash Table et Variable [ par darkyojimbo2 ] Salut,J'ai un problème avec les Hash Tables. J'ai toujours entendu dire que cette méthode est plus rapide que les variables classiques. Mais le problè while hash table [ par bibi_81 ] Salut je oudrais savoir a comment faire une boucle et une hash table !! merci~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~VIVE FINAL FANTASY 9 !!!!!<img s Infos & performances des hash tables [ par Nymouas ] Bonjour,J'ai découvert récemment les hash table et j'aimerai savoir comment c gérer par mirc. Par exemple, est-ce plus performant que des variables "n probleme de hashtables [ par kishkaya ] ben j'ai cherché dans l'aide mais j'ai pas trouvéje crés un systeme de log de membres avec une hashtablej'ai deux problemes : if ($hget(log) != lo modification de hashtable des que quelqu'un quit un salon [ par kishkaya ] Voila j'ai essayé plein de syntax mais ca a rien donnéj'aimerai que l'on supprime l'insertion $gettok($nick,1,124) de la hashtable 'authen' quand $nic Afficher le contenu d'une hashtable [ par kishkaya ] voila le contenu d'une hashtable est sous cette forme :$nick|logincela est geré par un bot et j'aimerai rajouter une fenetre, une windows dans ce bot icon [ par KiNdErMaXi ] alors voila j'ai fais un petit dialog pour changer l'image de l'icone en appuyant sur des boutons :dialog table { title "Test" size -1 -1 113 93 op hashtable et pixel [ par ranny ] Bonsoir tout le monde,Voila j'ai 2 petites questions.1/ Comment intervertir les valeurs d'une variable $hget.Par exemple comment donner la valeur de $ sauvegarder une table hash [ par mr_orus1 ] hello, voilà, j'aimerai sauvegarder une table hashvoilà comment j'essaie de m'y prendreon *:start:{  if ($exists(synant.hash)) hload -b synant synant. tri d'item dans une table hash [ par mr_orus1 ] Bonjour, voilà, j'aimerai trier des scores dans une table hash par itemj'ai fait ce code qui ne fait pas ce que je voudraisalias synorang {  hmake tes


Nos sponsors

Sondage...

CalendriCode

Décembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Téléchargements



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,530 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.