IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Tcl/Tk Discussion :

Error deleting "{FILE.txt}": permission denied


Sujet :

Tcl/Tk

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2012
    Messages : 15
    Points : 11
    Points
    11
    Par défaut Error deleting "{FILE.txt}": permission denied
    Bonjour,

    Lors du lancement de mon script test.tcl via tkcon:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (bin) 49 % tclsh test.tcl
    Je reçois le message d'erreur suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "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:
    Code : Sélectionner tout - Visualiser dans une fenêtre à 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 :)

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Pour éviter ce genre de message :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    error deleting "C:/Tcl/database/Password.txt": permission denied
    Il faut ajouter un test avant la commande rename comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if {[file writable C:/Tcl/database/Password.txt]} {
        file rename C:/Tcl/database/temp.txt C:/Tcl/database/Password.txt
    } else {
        # Il faut choisir un autre nom de fichier
    }

Discussions similaires

  1. Error deleting "Fichier.txt": permission denied
    Par thierrywoody dans le forum Tcl/Tk
    Réponses: 5
    Dernier message: 23/06/2014, 16h11
  2. [VB6] Error 70: Permission denied
    Par pom dans le forum VB 6 et antérieur
    Réponses: 14
    Dernier message: 08/03/2006, 18h56
  3. Linux error :13: Permission Denied
    Par manue85 dans le forum Oracle
    Réponses: 11
    Dernier message: 31/03/2005, 16h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo