Communauté Eggdrop

Version complète : manipulation des tableaux tcl à plusieurs dimentions
Vous consultez actuellement la version basse qualité d’un document. Voir la version complète avec le bon formatage.
bonjour tou le monde,
j'ai essay de faire ce script pour tester le remlissage, la recherche d'un element dans un tableau à plusieur dimention mais ce simple scrit marche tjr pas
svp si qlq peu le verifier.

-->donc si qlq tape la commande !tab coco
le script doit lui chercher ce mot "coco" dans la deusieme colone du tableau et lui retourne la var de la premier colone correspendant
et ajoute une ligne à la fin du tableau

tcl
bind pub - !tab pub:testtab
proc pub:testtab  { nick uhost handle arg channel }  {
set i 1
set idok "okid"
set pseudook "okpseudo"
set pseudoch $arg
set  tail [array size tabpseudo] 
array set tabpseudo(1 , id) {1}
array set tabpseudo(1 , pseudo) {coco}
array set tabpseudo(2 , id) {2}
array set tabpseudo(2 , pseudo) {hihi}
array set tabpseudo(3 , id) {3}
array set tabpseudo(3 , pseudo) {buybuy}
    for {set i 1} {$i < [array size tabpseudo]} {incr $i} { 
 
        if { [string match  "$pseudoch" $[array get $tabpseudo($i , pseudo)] ] } {
         array set tabpseudo([exper [array size tabpseudo] + 1] , 1) {$idok}
         array set tabpseudo([exper [array size tabpseudo] + 1] , 2) {$pseudook}
         putserv "PRIVMSG #$channel : l'id qui correspend à $pseudoch est: [array get $tabpseudo($i , id)]"
 
	   }
    }
}


bonjour,
si tu pouvais utiliser les balises [tcl ] [/ tcl] ADÉQUAT stp ça serais bien.

Citation :
Lorsque vous mettez du code tcl dans un message, pensez à utiliser les balises [ tcl ] et [ /tcl ] (sans les espaces) pour l'encadrer afin de le rendre plus lisible.
Merci beaucoup pour les lecteurs

tcl
bind pub - !tab pub:testtab
proc pub:testtab { nick uhost handle  channel arg } {
set i 1
set idok "okid"
set pseudook "okpseudo"
set pseudoch $arg
set tail [array size tabpseudo]
array set tabpseudo(1 , id) {1}
array set tabpseudo(1 , pseudo) {coco}
array set tabpseudo(2 , id) {2}
array set tabpseudo(2 , pseudo) {hihi}
array set tabpseudo(3 , id) {3}
array set tabpseudo(3 , pseudo) {buybuy}
for {set i 1} {$i < [array size tabpseudo]} {incr $i} {
 
if { [string match "$pseudoch" $[array get $tabpseudo($i , $pseudo)] ] } {
array set tabpseudo([exper [array size tabpseudo] + 1] , 1) {$idok}
array set tabpseudo([exper [array size tabpseudo] + 1] , 2) {$pseudook}
putserv "PRIVMSG $channel : l'id qui correspondant à $pseudoch est: [array get $tabpseudo($i , id)]"
 
}
}
}


Le soucis viens de ton string match, tu n'emplois pas du tout la bonne méthode.
En fait tu fais n'importe quoi:

tcl
if { [string match "$pseudoch" $[array get $tabpseudo($i , $pseudo)] ] } {



Cette ligne, c'est du n'importe quoi.
Tu voulais écrire:

tcl
if { [string match "$pseudoch" $tabpseudo($i , $pseudo)] } {



La tu as tout confondus, je t'invite à lire la documentation de [array get] pour mieux comprendre ton erreur.