[Demande] Ouverture de Fichier.
#1
Bonjour,

Je me permet de faire une Demande, concernant le traitement de fichier.
Voila je désire ouvrir 3 fichiers, mais sur un "set" commum.

Je vous montre, ce que je veux faire.

TCL
proc on { nick host hand arg} {
    variable file
    variable bfile
    variable admin
    set a [open $file]
    set a [open $bfile]
    set a [open $admin]
    set users [split [read $a] "\n"]
    close $a
    set salon [lindex $arg 0]
    set pseudo [lindex $arg 1]
    foreach u $users {
... blabla



Les variables appeler "file,bfile,admin", correspondent à ceci :

TCL
variable file "Csa/Helpeur.db"
    variable bfile "Csa/Csa.db"
    variable admin "Csa/admin.db"



Ma question et : Est-il possible de faire 3 "set a [open...", ou alors comment faire si nous ne pouvons pas.

Car appeler 3 fois le même "set", lors d'une ouverture, il se pourrais que cela enchaîne une suite de problème pour "eggdrop", trop d'ouverture de fichiers d'un seul coup ?

Cordialement
Vous interdisez les erreurs, vous empêchez ainsi la victoire.

Ma super kikoo-page loll
Répondre Avertir
#2
Je ne comprends même pas que tu puisses te poser la question... Chaque set va écraser le précédent, ça semble tellement logique.

Et si le but est de créer une liste de tous les utilisateurs contenus dans les fichiers, il y a plus logique:
TCL
proc fillfromfile {ulist file} {
   set fi [open $file]
   lappend ulist [split [read $fi] "\n"]
   close $fi
   return $ulist
}
 
proc on { nick host hand arg} {
    set user {}
    set user [fillfromfile $user $file]
    set user [fillfromfile $user $bfile]
    set user [fillfromfile $user $admin]
    set salon [lindex $arg 0]
    set pseudo [lindex $arg 1]
    foreach u $users {


Répondre
#3
Mais je suis con..

Oui en effet, sa écrase les set précédents pff.
Par contre ton système et très intéressant !

Mais une question tout de même : pourquoi tu "set user {}", Je ne comprend pas ce à quoi sa sert
Vous interdisez les erreurs, vous empêchez ainsi la victoire.

Ma super kikoo-page loll
Répondre Avertir
#4
Il sert à préparer une liste vide, c'est toujours bien d'initialiser les variables.
Répondre
#5
Je comprend pas, Même sur irc l'explication et insuffisante pour je voie la logique.

Je vais faire avec différents set et plusieurs if au moins je comprendrais mon code.
Merci tout de même de tes réponses.
Vous interdisez les erreurs, vous empêchez ainsi la victoire.

Ma super kikoo-page loll
Répondre Avertir
#6
Pour essayer de faire simple:
La procédure fillfromfile attends comme paramètres ulist (la liste des utilisateurs à compléter) et file (le fichier source).
Avant de faire un appel pour la première fois à cette procédure, je crée une liste vide que je peux passer en paramètre.

Une autre solution aurait été que le premier appel soit set user [fillfromfile {} $file].
Cette solution est moins propre car elle impose que tu saches toujours si tu as déjà commencé à remplir ta liste et te bride complètement.

Est-ce que ça ne t'est jamais arrivé de mettre une valeur par défaut dans un tcl ? C'est exactement pareil là, la valeur par défaut étant une liste vide.

Très franchement, je ne vois pas ce qui peut te bloquer sur cette ligne réellement basique.
Répondre
#7
Ah la oui je comprend !

Ce qui me bloquer c'est pour vider une liste tout en initialiser les variables.
C'est ce point la que j'avais du mal à comprendre..

Mais avec ton explication, la sa va mieux je pige bien le truc.

Merci beaucoup :p
Vous interdisez les erreurs, vous empêchez ainsi la victoire.

Ma super kikoo-page loll
Répondre Avertir


Atteindre :


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