cs_Melnofil
Messages postés71Date d'inscriptiondimanche 23 juin 2002StatutMembreDernière intervention 1 février 2008 23 nov. 2004 à 14:56
ok autant pour moi désolé ^^
cs_tofu
Messages postés1726Date d'inscriptionvendredi 12 septembre 2003StatutMembreDernière intervention13 juin 20091 23 nov. 2004 à 07:44
j'ai rajouté le point pour qu'on voye dans mon commentaire que ct une commande, comme si je connaissais pas les hash tables lais mdr quoi ..
cs_Melnofil
Messages postés71Date d'inscriptiondimanche 23 juin 2002StatutMembreDernière intervention 1 février 2008 23 nov. 2004 à 03:37
A mince j'ai oublié de signaler/modifier une autre erreur :
Par défauts les fonctions sur les htables n'affichent rien (il faut utiliser le paramêtre "-s") donc le "." devant "hadd" sert à rien, tofu c'est aussi vrai pour toi avec "hdel"...
cs_Melnofil
Messages postés71Date d'inscriptiondimanche 23 juin 2002StatutMembreDernière intervention 1 février 2008 23 nov. 2004 à 03:32
Bravo félicitations je t'ai mis 1 (Bon maintenant je me justifie avant de me faire casser la g***le)
Dans un alias appelé sous la forme /hrep il est impossible que les paramêtres $1 et $2 soient nuls si $3 ne l'est pas. Et plus simplement tu peux tester si "$0 > 2" ($0 contient le nombre de paramètres).
Note : Dans un identifiant il faudrait d'abords utiliser "/tokenize 32 $1-" pour parvenir au même résultat.
De plus tu utilise l'option "-m", je cite l'aide :
"L'option -m fait que /hadd crée la table si elle n'existe pas déjà."
Et ben alors... pkoi diable est-ce qu'on viens de faire un "if (!$hget($1))" ??
De plus il est toujours plus judicieux (pas obligatoire !) de traiter en premier les cas ou tout ce passe bien, puis traiter les erreurs à la fin ; surtout quand on se trouve dans une structure if/then/else facile à lire.
Et enfin une remarque -juste pour faire plus classe- on peut remplacer tous les 5 "halt" par seulement 1 "halt" pour le prix d'un "return" en plus.
Voilà ce que ca donne :
alias hrep {
if $0 > 2 {
if $hget($1,$2) != $null { .hadd -m $1- | return }
elseif !$hget($1) { echo -a *** /hrep Erreur table $1 Inexistante }
else echo -a *** /hrep Erreur Item $2 de la table $1 Inexitant
}
else echo -a *** /hrep Erreur Il manque $calc(3 - $0) paramètre(s).
halt
}
cs_tofu
Messages postés1726Date d'inscriptionvendredi 12 septembre 2003StatutMembreDernière intervention13 juin 20091 6 juil. 2004 à 21:12
t'as pas besoin de .hdel puis .hadd, qd tu .hadd ça écrase ce que tu avais précédemment.
cs_Seregon
Messages postés126Date d'inscriptionmercredi 30 avril 2003StatutMembreDernière intervention29 août 2004 6 juil. 2004 à 19:52
$1 $2 devien $1-2
$1 $2 $3 devien $1-
talking
Messages postés343Date d'inscriptiondimanche 30 novembre 2003StatutMembreDernière intervention19 août 20061 6 juil. 2004 à 17:10
ah bon ?? j'ai jamais vu cet alias ici
cs_ReMi34
Messages postés1025Date d'inscriptionvendredi 29 août 2003StatutMembreDernière intervention28 mars 20052 6 juil. 2004 à 16:36
Wapsnest avait réaliser la même chose :/
talking
Messages postés343Date d'inscriptiondimanche 30 novembre 2003StatutMembreDernière intervention19 août 20061 6 juil. 2004 à 16:02
D'accord merci SornDrixer je vais modifier ça je vais essayer d'utiliser le $iif comme tu l'a dit je l'utilise térs souvent dans mes autres codes
cs_SornDrixer
Messages postés2084Date d'inscriptionjeudi 12 décembre 2002StatutMembreDernière intervention30 janvier 20118 6 juil. 2004 à 14:36
Tes 3 if de vérification d'erreur, tu peux en faire qu'un seul :
if !$3 { echo -a *** /hrep Erreur Paramètre manquant | halt }
Si $3 n'existe pas, c'est que $1 et $2 non plus.
Si cela te gêne cette méthode de raisonner, tu peux toujours faire :
if (!$1 || !$2 || !$3) { }
Si tu veux absolument afficher à quoi correspond le paramètre manquant, utilises $iif()
Voila, sinon c'est une très bonne chose de vouloir compléter les commandes pour hashtable, mais je trouve le code un peu maigre.
une idée :
En spécifiant le paramètre -n à ton alias, si jamais la table n'existe pas, alors ton alias la crée.
23 nov. 2004 à 14:56
23 nov. 2004 à 07:44
23 nov. 2004 à 03:37
Par défauts les fonctions sur les htables n'affichent rien (il faut utiliser le paramêtre "-s") donc le "." devant "hadd" sert à rien, tofu c'est aussi vrai pour toi avec "hdel"...
23 nov. 2004 à 03:32
Dans un alias appelé sous la forme /hrep il est impossible que les paramêtres $1 et $2 soient nuls si $3 ne l'est pas. Et plus simplement tu peux tester si "$0 > 2" ($0 contient le nombre de paramètres).
Note : Dans un identifiant il faudrait d'abords utiliser "/tokenize 32 $1-" pour parvenir au même résultat.
De plus tu utilise l'option "-m", je cite l'aide :
"L'option -m fait que /hadd crée la table si elle n'existe pas déjà."
Et ben alors... pkoi diable est-ce qu'on viens de faire un "if (!$hget($1))" ??
De plus il est toujours plus judicieux (pas obligatoire !) de traiter en premier les cas ou tout ce passe bien, puis traiter les erreurs à la fin ; surtout quand on se trouve dans une structure if/then/else facile à lire.
Et enfin une remarque -juste pour faire plus classe- on peut remplacer tous les 5 "halt" par seulement 1 "halt" pour le prix d'un "return" en plus.
Voilà ce que ca donne :
alias hrep {
if $0 > 2 {
if $hget($1,$2) != $null { .hadd -m $1- | return }
elseif !$hget($1) { echo -a *** /hrep Erreur table $1 Inexistante }
else echo -a *** /hrep Erreur Item $2 de la table $1 Inexitant
}
else echo -a *** /hrep Erreur Il manque $calc(3 - $0) paramètre(s).
halt
}
6 juil. 2004 à 21:12
6 juil. 2004 à 19:52
$1 $2 $3 devien $1-
6 juil. 2004 à 17:10
6 juil. 2004 à 16:36
6 juil. 2004 à 16:02
6 juil. 2004 à 14:36
if !$3 { echo -a *** /hrep Erreur Paramètre manquant | halt }
Si $3 n'existe pas, c'est que $1 et $2 non plus.
Si cela te gêne cette méthode de raisonner, tu peux toujours faire :
if (!$1 || !$2 || !$3) { }
Si tu veux absolument afficher à quoi correspond le paramètre manquant, utilises $iif()
Voila, sinon c'est une très bonne chose de vouloir compléter les commandes pour hashtable, mais je trouve le code un peu maigre.
une idée :
En spécifiant le paramètre -n à ton alias, si jamais la table n'existe pas, alors ton alias la crée.