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.
#2
Je pense que tes variables issues du fichier sont prises comme des strings, donc ton expr ne sait pas s'en servir.
Essaye quelque chose du genre:

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

zeolia: tchat gratuit, sans inscription ni publicité
Merci de ne pas demander d'aide en MP
Away
#3
Le soucis a été réglé par TiSmA.
Nous en avons déduis que je me compliquais 100 fois trop la vie (overdose de tcl, pas bon xD)

La source actuele :


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"] {
		if {$var ne ""} {
			dofia:file "del waar-access [lindex $var 0]"
			set vnew [waar:get "lookor [lindex $var 10]"]
			dofia:file "multiwrite waar-access [lindex $var 0] [lindex $var 1] [lindex $var 2] [lindex $var 3] [expr [lindex $var 4] + [subst -nocommands $vnew]] [lindex $var 5] [lindex $var 6] [lindex $var 7] [lindex $var 8] [lindex $var 9] [lindex $var 10]"
		}
	}
	close $liste
}


Encore un grand merci a TiSmA.


PS : Enfait, j'avais un soucis au niveau du renvoie d'une de mes vars.
#4
DaV34 Wrote:Encore un grand merci a TiSmA.
... ainsi qu'à tous ceux qui ont essayé de t'aider, CrazyCat, moi-même, .. [Image: http://www.boulets-roxx.com/forum/Smiley...siffle.gif]
Toute l'actualité de mes scripts ici     (dernière mise à jour le 22/04/2020)

Tout programme comporte au moins un bug et pourrait être raccourci d'au moins une instruction, de quoi l'on peut déduire que tout programme peut être réduit à une seule instruction qui ne fonctionne pas.
#5
MenzAgitat Wrote:
DaV34 Wrote:Encore un grand merci a TiSmA.
... ainsi qu'à tous ceux qui ont essayé de t'aider, CrazyCat, moi-même, .. [Image: http://www.boulets-roxx.com/forum/Smiley...siffle.gif]


Tu as raison, j'ai oublié de vous remerciez ... (bouh ! que je suis impolis moi alors).
Non serieusement merci, j'ai certainement oublier de le mentionner au vu de l'heure a laquelle j'ai poster mon message xD


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

Forum Jump:


Users browsing this thread: 1 Guest(s)