Probleme sur deux codes tcl...
#1
Bien le bonjour,
Avec mon code tcl j'ai deux problemes que je vais vous decrires pour savoir si vous pouvez m'aider.

1 - Probleme n°1 - Ajout dans la base de donnée
J'ai une commande !addtaff qui me permet d'enregistrer un texte dans une database pour la lire ultérieurement hors cela bug.
Si j'effectue un "!addtaff ceci est un test" (donc pour enregistrer la phrase "ceci est un test" dans la database) lors de sa lecture j'obtient que "est un test" en gros il me supprime le premier mots au debut.

Voici le code tcl
Script supprimé: Codes couleurs mIRC

2 - Probleme n°2 - Suppression des textes dans la bases de donnée
Deuxieme probleme celui ci lors de la suppression dans la base de donnée. J'ai une commande !deltaff qui efface correctement les textes désirer dans la base de donnée mais quand celle ci est vide, la commande !deltaff fait bug le robot qui indique l'erreure :
"can't read "datalist": no such variable"
Donc j'aimerais que quand je fait !deltaff meme si la database est vide le robot ne plante pas car cela est assez genant ...

Voici le code tcl
TCL
proc deltaff:deltaff {pseudonyme cible salon} {
global Clam;
    set file [open "[Clam:scriptdir]db/taff.db" r]
    set fc 0
    set fd 0
    while {![eof $file]} {
      set line [gets $file]
      incr fc
      if {$fc == $cible } {
        putdcc $Clam(idx) ":$Clam(pseudo) NOTICE $pseudonyme :Effacement du boulot n°$cible"
        set fd 1
      } else {
        lappend datalist $line
      }
    }
    close $file
    incr fc -1
    set file [open "[Clam:scriptdir]db/taff.db" w]
    foreach line $datalist {
      if {$line != "" } { puts $file $line }
    }
    close $file
    if { $fd == 0 } { 
	putdcc $Clam(idx) ":$Clam(pseudo) NOTICE $pseudonyme :Erreur ! le numéro de la ligne n'existe pas" }
}


Répondre
#2
Je re poste le code qui a etait supprimer pour les couleurs (je ne pouvais pas editez sa me dit que je doit attendre un nombre de minutes)

TCL
proc addtaff:addtaff {cible pseudonyme} {
global Clam;
set f [open "[Clam:scriptdir]db/taff.db" "a"]
puts $f "([clock format [clock seconds] -format " %x  %X"] ) $cible  par $pseudonyme"
close $f
putdcc $Clam(idx) ":$Clam(pseudo) NOTICE $pseudonyme OK. Travail à faire bien ajouté."
}



Merci aux futurs aides.
Répondre
#3
alors, a tout hasard, essai ça:
pour ton souci de lecture:


TCL
proc addtaff:addtaff {arg pseudonyme} {
global Clam
set taff [lindex $arg 0 end]
set f [open "[Clam:scriptdir]db/taff.db" "a"]
puts $f "([clock format [clock seconds] -format " %x  %X"] ) $taff  par $pseudonyme"
close $f
putdcc $Clam(idx) ":$Clam(pseudo) NOTICE $pseudonyme OK. Travail à faire bien ajouté."
unset taff
}



Mais là c'est concernant l'ajout dans la db, le souci est peut être a la lecture, il serai interessant d'avoir la portion de code qui te permet de le lire.


______________________________________
Lorsque le sage montre le ciel, le sot regarde le doigt.
Répondre Avertir
#4
J'ai malheuresement deja essayer de cette maniere avec cette maniere je n'est carrement plus la phrase
Voila ce que cela me donne :
‹~Heretoc› !addtaff ceci est un test
Notice Clams: OK. Travail à faire bien ajouté.
‹~Heretoc› !tafflist
Notice Clams: 1 - ( 30.04.2009 19:50:15 ) est par heretoc

Si quelqu'un a une idée ou meme une solution sa serais super.
Merci aux futurs aides.
Répondre
#5
essai comme ça:

TCL
TCL :
proc addtaff:addtaff {cible pseudonyme} {
global Clam
set cible0 "x $cible"
set f [open "[Clam:scriptdir]db/taff.db" "a"]
puts $f "([clock format [clock seconds] -format " %x  %X"] ) . $cible0  par $pseudonyme"
close $f
putdcc $Clam(idx) ":$Clam(pseudo) NOTICE $pseudonyme OK. Travail à faire bien ajouté."
unset cible0
}



s'il t'ignore le premier mot, on va mettre un caractere sans incidence a ignorer Smile
Répondre Avertir
#6
Bonne idée mais toujours pas =/
Répondre
#7
Supprimé: codes couleurs mIRC - Et utilisez les balises [ TCL ] et [ /TCL ] pour mettre votre code ici
Répondre Avertir
#8
1 - Ce n'est pas ton code, say un code de chat-land que tu te permet d'utiliser sans leurs autorisations
2 - Tu le distribue sans leurs autorisations
3 - Code couleurs invalide
4 - Cela ne m'aide pas du tout
Mais merci quand meme.

-------------------------

Sorry mais j'aime pas les gens qui se permette de prendre des codes qui leurs apartiennent pas et de les posts aux yeux de tous surtout que sans mon cas sa m'aide pas la...
Après plusieurs test j'arrive toujours au meme point, c'est a dire qu'il ne prend pas le premier mots...

Si quelqu'un a une idée, sa serais super
Répondre
#9
Tu dois nous montrer tous le code, la fonction qui apelle addtaf par exemple, parceque apriori le souvies vien d'avant ta proc.
Pour ton soucis numéro 2 c'est normal, regardes ton code... tu ne définis $datalist (avec lappend) QUE lorsque tu lis une ligne. Si jamais tu ne rentres pas dans ta boucle (cad que le fichier est vide), la variable n'est jamais définie.
Répondre Avertir
#10
Voila Merwin ce que tu me demander.
La variable text:
TCL
set text [lrange [split $raw_brute] 5 end];



La fonction qui appel la commande:
TCL
if {$commande == "!addtaff"} {
	if {$Hosts_Equipe_Niveaux >= 9} {
		set Sortie 1;
			addtaff:addtaff $text $pseudonyme;
		}



La commande :
TCL
proc addtaff:addtaff {text pseudonyme} {
global Clam;
set f [open "[Clam:scriptdir]db/taff.db" "a"]
puts $f "([clock format [clock seconds] -format " %x  %X"] ) $text par $pseudonyme"
close $f
putdcc $Clam(idx) ":$Clam(pseudo) NOTICE $pseudonyme OK. Travail à faire bien ajouté."
}


Répondre
#11
Si c'est ton code, tu devrais lire mon tuto sur les listes: http://xineos.free.fr/listes_tcl.html .

1)
TCL
set text [lrange [split $raw_brute] 5 end];



Ici tu parles de "texte", pourtant [lrange] te retournera une liste, c'est bien ce que tu veux?

S'il te manque un mot, ça vien très certainements de ton index de lrange, tu mets 5, t'es sur que c'est pas 4?
Répondre Avertir
#12
Si je change le 5 en 4 il me prend plus que le premier mots ...

Et oui je veut que sa me retourne une liste du moin lors de la lecture de "taff.db"
Répondre
#13
Faudrait savoir ce que contient $raw_brute aussi,, le code éparpillé c'est bof tu peux pas C/C ça proprement sans rien omettre?
Répondre Avertir
#14
Mon bot est fait en plusieurs fichier pour cela que les codes sont eparpillé ...
Sinon raw_brute correspond enfaite à arg .
Répondre
#15
"arg" ne veut rien dire.
TCL
set arg 1
set arg {"a" "b" "c"}
set arg "abc"


Répondre


Atteindre :


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