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 :
Citation :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 :
Citation :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 :

Citation :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.
Répondre Avertir


Messages dans ce sujet
Soucis au niveau de "expr" - par DaV34 - 29/02/2008, 00:53
RE: Soucis au niveau de "expr" - par CrazyCat - 29/02/2008, 00:59
RE: Soucis au niveau de "expr" - par DaV34 - 29/02/2008, 02:00
RE: Soucis au niveau de "expr" - par MenzAgitat - 29/02/2008, 14:08
RE: Soucis au niveau de "expr" - par DaV34 - 29/02/2008, 14:43

Atteindre :


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