set varName ?newValue? - Garfield - 06/03/2008
Bonsoir,
Je voudrais réaliser un petit TCL qui, dans l'idéal :), pioche une question dans un fichier texte, jusque là tout va bien, toutes les Xh15mn
j'ai donc fait comme ceci :
Code : bind time - "15 * * * *" actionquest
bind pubm -|- * reponse
# -> Sélection de l'énigme
proc actionquest { min hour day month year } {
global rep tps_rep
set nbr_lignes [compte:lignes $::rpg(quest)]
set num_hasard [expr int(rand()*$nbr_lignes)+(1&&$nbr_lignes)]
set ligne [read:event $::rpg(quest) $num_hasard]
set ligne_split [split $ligne "|"]
set quest [lindex $ligne_split 0]
set rep [lindex $ligne_split 1]
putserv "PRIVMSG $::rpg(chan) :$quest"
puthelp "PRIVMSG $::rpg(chan) :Vous disposez de 30 secondes pour répondre."
set tps_rep "on"
set utimer 30 endquest
}
# -> Fin du temps de réflexion
proc endquest {nick host hand text} {
global tps_rep
set tps_rep "off"
}
# -> Verification réponse
proc reponse { nick host hand chan arg text } {
global rep tps_rep
set zoom [lrange arg 0 end]
if { $tps_rep == "off" } { puthelp "NOTICE $nick :Désolé mais le temsp impartit est écoulé"
return 0
}
if { $zoom != $rep } {
return 0
}
if { $zoom == $rep } {
puthelp "PRIVMSG $::rpg(chan) : Bravo $nick !!"
}
}
le problème est que j'ai ça en PL :Code : Tcl error [actionquest]: wrong # args: should be "set varName ?newValue?"
et là je suis coincé, pouriez-vous m'aider svp ?
Merci !
RE: set varName ?newValue? - CrazyCat - 06/03/2008
Je ne vois pas ta procédure compte:ligne, il est possible qu'elle ne renvoit pas toujours une valeur.
RE: set varName ?newValue? - Garfield - 06/03/2008
J'utilise ceci pour lire et compter :Code : # -> Lecture
proc read:event { fichier num_ligne } {
if { ![file readable $fichier] } { return "\002\0034Erreur\003\002 : impossible de lire le fichier." }
if { $num_ligne<=0 } { return "\002\0034Erreur\003\002 : numéro de ligne non valide" }
set fHnd [open $fichier "r"]
set counter 0
set ligne ""
while { ![eof $fHnd] } {
set foo [gets $fHnd]
incr counter
if { $counter == $num_ligne } {
set ligne $foo
break
}
}
close $fHnd
return $ligne
}
# -> Comptage du nombre de lignes
proc compte:lignes { fichier } {
if { ![file readable $fichier] } { return 0 }
set fHnd [open $fichier "r"]
set counter 0
while { ![eof $fHnd] } {
gets $fHnd
incr counter
}
close $fHnd
return $counter
}
RE: set varName ?newValue? - Garfield - 22/03/2008
Trouvé...heu...merci :)
RE: set varName ?newValue? - CrazyCat - 22/03/2008
Désolé, j'avais raté ta réponse précédente.
Donc oui, je présume que ton
était mal placé ;)
RE: set varName ?newValue? - Garfield - 23/03/2008
En effet oui :)
|