Communauté Eggdrop
Probleme sur deux codes tcl... - Version imprimable

+- Communauté Eggdrop (https://forum.eggdrop.fr)
+-- Forum : Eggdrop et TCL (https://forum.eggdrop.fr/forumdisplay.php?fid=8)
+--- Forum : Scripts TCL (https://forum.eggdrop.fr/forumdisplay.php?fid=4)
+--- Sujet : Probleme sur deux codes tcl... (/showthread.php?tid=389)



Probleme sur deux codes tcl... - heretoc - 29/04/2009

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" }
}





RE: Probleme sur deux codes tcl... - heretoc - 29/04/2009

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.


RE: Probleme sur deux codes tcl... - BlackNight - 30/04/2009

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.


RE: Probleme sur deux codes tcl... - heretoc - 30/04/2009

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.


RE: Probleme sur deux codes tcl... - BlackNight - 30/04/2009

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


RE: Probleme sur deux codes tcl... - heretoc - 30/04/2009

Bonne idée mais toujours pas =/


RE: Probleme sur deux codes tcl... - TechNicienInfo - 01/05/2009

Supprimé: codes couleurs mIRC - Et utilisez les balises [ TCL ] et [ /TCL ] pour mettre votre code ici


RE: Probleme sur deux codes tcl... - heretoc - 01/05/2009

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


RE: Probleme sur deux codes tcl... - Merwin - 02/05/2009

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.


RE: Probleme sur deux codes tcl... - heretoc - 02/05/2009

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é."
}





RE: Probleme sur deux codes tcl... - Merwin - 02/05/2009

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?


RE: Probleme sur deux codes tcl... - heretoc - 02/05/2009

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"


RE: Probleme sur deux codes tcl... - Merwin - 03/05/2009

Faudrait savoir ce que contient $raw_brute aussi,, le code éparpillé c'est bof tu peux pas C/C ça proprement sans rien omettre?


RE: Probleme sur deux codes tcl... - heretoc - 03/05/2009

Mon bot est fait en plusieurs fichier pour cela que les codes sont eparpillé ...
Sinon raw_brute correspond enfaite à arg .


RE: Probleme sur deux codes tcl... - CrazyCat - 03/05/2009

"arg" ne veut rien dire.
TCL
set arg 1
set arg {"a" "b" "c"}
set arg "abc"