Bonjour,
Lors du lancement de mon script test.tcl via tkcon:
(bin) 49 % tclsh test.tcl
Je reçois le message d'erreur suivant:
error deleting "C:/Tcl/database/Password.txt": permission denied
Mon script test.tcl est une partie d'un plus grand script que j'essais de débuguer bloque par bloque.
Ce plus grand script quand à lui permet de questionner un utilisateur sur son identifiant et son mot de passe
ainsi que de répertorier si l'utilisateur est nouveau ou non.
Voici le script test.tcl:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
| proc updateState { lineNb } {
set idSource [open C:/Tcl/database/Password.txt r]
set idDesti [open C:/Tcl/database/temp.txt w]
set i 1
while {[eof $idSource]==0} {
gets $idSource data
if {$i==$lineNb} {
set newData [string replace $data 0 0 "0"]
puts $idDesti $newData
} else {puts $idDesti $data}
incr i
}
close $idSource
close $idDesti
file delete C:/Tcl/database/Password.txt
file rename C:/Tcl/database/temp.txt C:/Tcl/database/Password.txt
}
proc pswdVerification {userName pswd} {
set idFile [open C:/Tcl/database/Password.txt r]
set bool 0
set lineNb 1
while {[eof $idFile]==0 && !$bool} {
gets $idFile data
set userAndPswd [string range $data 2 end]
set newUser [string index $data 0]
if {![string compare "$userName $pswd" $userAndPswd]} {
set bool 1
if {$newUser} { updateState $lineNb }
}
incr lineNb
}
close $idFile
return "$bool $newUser"
}
set returns [pswdVerification stunstill 3aZE.rt-y]
puts [lindex $returns 0]
puts [lindex $returns 1] |
ainsi que la structure du fichier Password.txt (chaque utilisateur à sa propre ligne):
"nouveau" "identifiant" "mot de passe"
Exemple de l'utilisateur narbeid qui est non-nouveau ayant pour mot de passe Qwerty42:
Le script test.tcl en question vérifie si l'identifiant et le mot de passe entrés ce trouve bien dans la banque de données et si l'utilisateur les rentres pour la première fois
alors updateState est appelé pour l’édition du fichier Password.txt (afin de changer le 1 en 0)
Voilà rien de bien folichon, et pourtant je plante... j'ai épuisé toutes mes idées et je ne sais toujours pas pourquoi il m'ait interdit de supprimer le fichier Password.txt
De plus si je test seulement la proc updateState dans un script à part:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| proc updateState { lineNb } {
set idSource [open C:/Tcl/database/Password.txt r]
set idDesti [open C:/Tcl/database/temp.txt w]
set i 1
while {[eof $idSource]==0} {
gets $idSource data
if {$i==$lineNb} {
set newData [string replace $data 0 0 "0"]
puts $idDesti $newData
} else {puts $idDesti $data}
incr i
}
close $idSource
close $idDesti
file rename -force C:/Tcl/database/temp.txt C:/Tcl/database/Password.txt
}
set lineNb 2
updateState $lineNb |
je ne reçois aucun message d'erreur et l’édition s'est faite avec succès :/
Je vous remercie d'avance pour vos réponse :)
Partager