Mise en forme de code: pensez à utiliser les balises [ tcl ] et [ /tcl ] (sans les espaces bien sûr) autour de vos codes tcl afin d'avoir un meilleur rendu et une coloration syntaxique. x


[Demande] Soucis avec expr
#1
Bonjour,

Je viens demander une explication concernant expr.
Dans un code j'aimerais inclure cette fonctionnalité, pour un calcul sur millisecondes.

Donc lorsque je rehash l'eggdrop y'a aucun soucis sa fonctionne bien.
Mais lorsque je tape par exemple !tcl pushmode je n'es aucun retour.

le rehash :
Quote:.[13:49:31] <alias_angelius> .rehash
.[13:49:31] <Talk-Me> [13:50:30] #alias_angelius# rehash
.[13:49:31] <Talk-Me> Rehashing.
.[13:49:31] <Talk-Me> [13:50:30] Rehashing ...
.[13:49:31] <Talk-Me> [13:50:30] Listening at telnet port 3334 (all).
.[13:49:31] <Talk-Me> [13:50:30] TCL public chargé.
.[13:49:31] <Talk-Me> [13:50:30] Userfile loaded, unpacking...

La commande sur le salon :
Quote:.[13:50:12] <@alias_angelius> !tcl pushmode

Aucune erreur en PL à ce moment là.

Je pense que mon soucis provient de expr, je l'ai mal interpréter dans le code.
Je veux pas une solution toute offerte.. Car sa n'aurais aucun sens, juste quelques explication me forçant à réfléchir.

Voici le code :

tcl
#############################
#                           #
# Tcl Eval commande public. #
#                           #
#############################
 
namespace eval ::tcleval {
   
   # Nous vérifions si ya le package requis pour le msgcat. Vous pouvez vérifier en PL avec la commande : .tcl info patchlevel
   package require msgcat
   # Nous mettons la langue de msgcat en français.
   ::msgcat::mclocale fr
   # Commandes chars Exemple "." ou "!" Ce qui donnera par exemple : .tcl/!tcl
   set cmds(char) "!"
    # Les messages msgcat.
    ::msgcat::mcset fr tc1 "\002TCL ->\002"
    ::msgcat::mcset fr tc2 "\002Done.\002"
    
    # Le code TCL.
    set ::tcleva_timeout 5
    
    bind pub - "$::tcleval::cmds(char)tcle" [namespace current]::tcle
    proc tcle {nick host hand chan arg} {
    catch [list uplevel 0 $arg] error
    foreach line [split $error "\n"] {
       if {$line!=""} {
           putserv "PRIVMSG $chan :[::msgcat::mc tc1] $line"
       }
       variable version 1.0
    }
    putserv "PRIVMSG $chan :[::msgcat::mc tc2] [expr $::tcleva_timeout * 1000]"
    }
}
putlog "\0034TCL public chargé.\0034"

Vous interdisez les erreurs, vous empêchez ainsi la victoire.

Ma super kikoo-page loll
#2
C'est peut-être parce que ton bind est sur !tcle et non pas sur !tcl ?
zeolia: tchat gratuit, sans inscription ni publicité
Merci de ne pas demander d'aide en MP
Away
#3
En effet..

Par contre sa me calcul comme ceci

Quote:.[14:09:58] <@alias_angelius[Afk]> !tcl pushmode
.[14:10:01] <@Talk-Me> TCL -> wrong # args: should be "pushmode channel mode ?arg?"
.[14:10:01] <@Talk-Me> Done. 5000 Millisecondes

C'est le temps de réponse entre la commande et sa réponse ?
Que je sois sûre
Vous interdisez les erreurs, vous empêchez ainsi la victoire.

Ma super kikoo-page loll
#4
Les 5000 millisecondes ? C'est le résultat de $::tcleva_timeout * 1000.
J'imagine donc que $::tcleva_timeout est réglé à 5.

expr ne fait qu'évaluer une expression (souvent mathématique).
zeolia: tchat gratuit, sans inscription ni publicité
Merci de ne pas demander d'aide en MP
Away
#5
Oui j'ai modifié avec ton code Crazy


tcl
#############################
#                           #
# Tcl Eval commande public. #
#                           #
#############################
namespace eval ::tcleval {
 
    # Nous vérifions si ya le package requis pour le msgcat. Vous pouvez vérifier en PL avec la commande : .tcl info patchlevel
    package require msgcat
    # Nous mettons la langue de msgcat en français.
    ::msgcat::mclocale fr
    # Commandes chars Exemple "." ou "!" Ce qui donnera par exemple : .tcl/!tcl
    set cmds(char) "!"
     # Les messages msgcat.
     ::msgcat::mcset fr tc1 "\002TCL ->\002"
     ::msgcat::mcset fr tc2 "\002Done.\002"
 
     # Le code TCL.
     proc sleep {time} {
        after $time set end 1
        vwait end
     }
     bind pub - "$::tcleval::cmds(char)tcl" [namespace current]::tcl
     proc tcl {nick host hand chan arg} {
        variable sleep
        catch [list uplevel 0 $arg] error
        foreach line [split $error "\n"] {
            if {$line!=""} {
                putserv "PRIVMSG $chan :[::msgcat::mc tc1] $line"
            }
        variable version 1.0
        }
     putserv "PRIVMSG $chan :[::msgcat::mc tc2] [expr [lindex [$::sleep] 0] millisecondes.]"
     }
}
putlog "\0034TCL public chargé.\0034"


En PL :

Quote:.[15:15:13] <Talk-Me> [15:18:34] Tcl error [::tcleval::tcl]: can't read "::sleep": no such variable
Vous interdisez les erreurs, vous empêchez ainsi la victoire.

Ma super kikoo-page loll
#6
Bien bien bien...

Donc, tu crées une procédure sleep dans le namespace ::tcleval et ensuite tu appelles la variable sleep (d'où sort-elle ?)

Tu ne penses pas que si à la place de:

tcl
variable sleep

tu mettais:

tcl
::tcleval::sleep 500

zeolia: tchat gratuit, sans inscription ni publicité
Merci de ne pas demander d'aide en MP
Away
#7
J'ai modifié ainsi.. en relisant tout correctement..


tcl
set arg [join $arg]
            for {set x 0; set t [clock microseconds]} {$x<$repeat} {incr x} {
                catch [list uplevel 0 $arg] rep
            }
            set t2 [clock microseconds]
            set time [expr ($t2-$t)]
            set interact [expr $time/($repeat/1.0)]
            set time [format %.3f [expr round($time)/1000.0]]
            foreach r [split $rep \n] {


En faisant ainsi j'ai comme réponse :

Quote:.[17:02:49] <+alias_angelius[Afk]> !tcl pushmode
.[17:02:51] <@Talk-Me> TCL -> wrong # args: should be "pushmode channel mode ?arg?"
.[17:02:52] <@Talk-Me> Done. 0.044 Millisecondes (44.0 µs/i)
.[17:03:04] <+alias_angelius[Afk]> !tcl info patchlevel
.[17:03:06] <@Talk-Me> TCL -> 8.5.3
.[17:03:07] <@Talk-Me> Done. 0.024 Millisecondes (24.0 µs/i)

Merci de ta patience Crazy :)
Vous interdisez les erreurs, vous empêchez ainsi la victoire.

Ma super kikoo-page loll


Possibly Related Threads…
Thread Author Replies Views Last Post
  [Bug] Soucis avec un tcl Dark.tcl de Kyrien d'après la création de GeoZzZ [Sujet Reformulé] KeeViiNou 2 3,379 24/02/2017, 10:59
Last Post: KeeViiNou
  Soucis avec un tcl KeeViiNou 1 3,817 08/05/2016, 14:06
Last Post: KeeViiNou
  [Résolu] Soucis avec une commande Scorpio 11 6,550 22/01/2016, 12:58
Last Post: Scorpio
  Soucis de codage avec un kick KeeViiNou 14 8,687 26/03/2014, 23:18
Last Post: KeeViiNou
  Soucis avec un codage KeeViiNou 9 6,479 14/03/2014, 21:22
Last Post: aliasangelius
  Soucis avec un tcl de sajoin KeeViiNou 15 11,399 14/03/2014, 10:51
Last Post: KeeViiNou
  Petit soucis avec un script d'annonce de la saint du jour, etc... loulou7593 3 6,036 19/11/2011, 14:53
Last Post: CrazyCat
  petit soucis avec logger lesny 54 33,787 12/08/2011, 18:52
Last Post: lesny
  soucis avec irix lesny 5 5,622 29/06/2011, 21:15
Last Post: djkenny
  Un soucis avec TCL dorset_sp 26 15,256 04/04/2011, 14:39
Last Post: CrazyCat

Forum Jump:


Users browsing this thread: 1 Guest(s)