manipulation des tableaux tcl à plusieurs dimentions
#1
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)]"
 
	   }
    }
}


Répondre Avertir
#2
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)]"
 
}
}
}


[font=Times New Roman]La différence entre Linux et Windows ,c'est que Linux c'est comme une belle fille , il faut l'apprivoiser , la comprendre , la séduire tandis que Windows , c'est comme une prostitué , il faut payer et surtout bien se protéger.[/font]
Répondre Avertir
#3
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.
Répondre Avertir


Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)
Tchat 100% gratuit -Discutez en toute liberté