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


Soucis au niveau de "expr"
#1
Bonjour,

Je poste la, car vraiment, je ne vois plus la solution, j'ai éssayer pas mal de solution, mais toujours des erreurs.

Donc en gros, ont par du principe ou j'ai une variable "x", qui a une valeur, je veut l'additionner a une variable "y" que je vais récuperer dans un fichier.
Voila en gros ce que je dois faire.

En pratique :


tcl
proc waar:up {min hour day month year} {
	set liste [open [dofia:dir]db/waar-access.db r]
	putlog "Pseudo / Pass / Mail / Date-Inscription / Total-Or / Total-Population / Total-Xp / Total-Soldat / Total-Chevalier / Total-Héros / Lvl-Or"
	foreach var [split [read $liste] "\n"] { 
		foreach a [list pseudo pass mail dinscription totor totpop totxp totsoldat totchevalier totheros lvlor] b [list 0 1 2 3 5 6 7 8 9 10] { set $a [lindex $var $b] }
		set lvlpowa [waar:get "lookor $lvlor"]
		# Le soucis se trouve a se niveau
		set ntotor [expr $totor + $lvlpowa]
		set ntotpop [expr {$totsoldat + $totchevalier + $totheros}]
		dofia:file "verif waar-access $pseudo"
		dofia:file "multiwrite waar-access $pseudo $pass $mail $dinscription $ntotor $ntotpop $totxp $totsoldat $totchevalier $totheros $lvlor"
	}
}

En gros, la proc waar:up se lance tout les quarts d'heures et je voudrais qu'elle mette a jour deux variables.
- "totor", qui définie le nombre d'or que possède la personne
- "ntotpop", qui définie la population totale de la personne

Je vous poste la proc waar:get pour que les choses soient bien claire :


tcl
proc waar:get {arg} {
	set arg [split $arg]
	set cmd [string tolower [lindex $arg 0]]
	set opt [string tolower [lindex $arg 1]]
	switch -exact $cmd {
		"lookor" {
			#Oragnisation: <lvl> <nbreor>
			set liste [open [dofia:dir]db/waar-database.db r]
			foreach var [split [read $liste] "\n"] {
				if {[lindex $var 0] eq $opt} {
					return [expr {[lindex $var 1] / 4}]
					break;
				} else {
					continue;
				}
			}
		}
	}
}


Le soucis, comme dit précédement, se trouve bel et bien a se niveau la :


tcl
set ntotor [expr $totor + $lvlpowa]


Avec cette solution, l'erreur retourner est :
Quote:Tcl error: syntax error in expression "0 + ": premature end of expression

J'ai donc essayer :


tcl
set ntotor [expr {$totor + $lvlpowa]


Avec cette nouvelle solution, l'erreur retourner est :
Quote:Tcl error: can't use empty string as operand of "+"

Alors n'ayant trouver, j'ai essayer une méthode barbare, adapter a mon script, qui me retourne elle encore une erreur. Il s'agit de crée une proc addition, voyez cela :


tcl
proc addition {e1 e2} {
	set a "0"
	incr a $e1
	incr a $e2
	return $a
}


J'utilise donc pour mon chimblic :


tcl
set ntotor [addition $totor $lvlpowa]


L'erreur retournée est :

Quote:Tcl error: expected integer but got ""


Voila, si quelqu'un a la solution, sa serait sympa de me la donner, car bon, je suis sur que pour mon cas se sont des erreurs a la con.


Messages In This Thread
Soucis au niveau de "expr" - by DaV34 - 29/02/2008, 00:53
RE: Soucis au niveau de "expr" - by CrazyCat - 29/02/2008, 00:59
RE: Soucis au niveau de "expr" - by DaV34 - 29/02/2008, 02:00
RE: Soucis au niveau de "expr" - by DaV34 - 29/02/2008, 14:43

Possibly Related Threads…
Thread Author Replies Views Last Post
  [Demande] Soucis avec expr aliasangelius 6 4,187 13/01/2017, 18:06
Last Post: aliasangelius
  Probleme niveau html NesCrex 1 2,311 06/03/2011, 16:14
Last Post: djkenny
  If & Expr, c'est pareil o.O Artix 6 3,188 06/09/2009, 21:36
Last Post: Artix

Forum Jump:


Users browsing this thread: 1 Guest(s)