Afyn
Messages postés608Date d'inscriptionsamedi 3 août 2002StatutMembreDernière intervention22 décembre 2016
-
15 août 2004 à 23:17
RedLupus
Messages postés5Date d'inscriptionlundi 8 mars 2004StatutMembreDernière intervention17 août 2004
-
17 août 2004 à 08:21
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
RedLupus
Messages postés5Date d'inscriptionlundi 8 mars 2004StatutMembreDernière intervention17 août 2004 17 août 2004 à 08:21
Bonjour ShadowMaster, Bonjour Vlad2i.
ShadowMaster, tu as raison, "option Base 1" est, sommes toute, une contrainte inutile. J'ai donc modifié mon code dans ce sens. On n'est donc plus obligé de déclarer le tableau T(1..n).
Vlad2i, tu as raison, on peut simplifier. En fait, la première version positionnait le bit, en accord avec une valeur passée en argument, ce qui me faisait positionner le bit en 2 temps :
1 - RAZ ("and 0")
2 - positionnement ("or <valeur du bit")
A présent, ce n'est plus nécessaire, j'ai donc modifié le "case" en ce sens.
Toutefois, les valeurs de "C" ont été choisies de telle sorte que l'on peut toujours appeler la procédure, sans avoir testé au préalable la valeur que devra avoir le bit. il suffit de l'appeler ainsi :
RWCheckBit(T,P,abs(MonBooléen))
Quant à "Maxp", variable servant une seule fois (quel luxe !) je l'ai virée comme indiqué précédemment.
Merci beaucoup pour vos remarques qui me permettent de m'améliorer.
ShadowMaster
Messages postés184Date d'inscriptionmercredi 27 novembre 2002StatutMembreDernière intervention18 août 2005 16 août 2004 à 20:50
merci merci, je connais option explicit, je connais les tableaux pas besoin de m'expliquer :D
Par contre option base 1 moué ça peu avoir son utilité mais bon, pas indispensable, on peu declarer son tableau comme ça:
Dim T (1 to 5) as ...
RedLupus
Messages postés5Date d'inscriptionlundi 8 mars 2004StatutMembreDernière intervention17 août 2004 16 août 2004 à 20:40
Salut vlad2i,
J'écivais en même temps que toi ! lol !
Tu as raison : Je pourrais commencer par "virer" la variable "MaxP", par exemple. Enfin ! je ferai mieux (enfin... peut-être... :) ) la prochaine fois (l'espoir fait vivre, dit-on).
Encore merci à tous.
RedLupus
Messages postés5Date d'inscriptionlundi 8 mars 2004StatutMembreDernière intervention17 août 2004 16 août 2004 à 20:32
Bonjour ShadowMaster.
Option Explicit est ici sans grande importance. Je la mets systématiquement car elle force à déclarer "explicitement" doute variable. Si on omet d'en déclarer une, cela provoque une erreur à la compilation. Je trouve simplement que c'est une bonne précaution, pour une bonne habitude.
Option Base 1, par contre est importante dans ce code. Elle fixe l'indice inférieur par défaut d'un tableau. Sans cette option, la valeur infèrieure d'indice pour un tableau est 0.
Dans ce cas :
dim T(5) as... (ce que tu veux...) correspondrait au tableau T(0), T(1), T(2), T(3), T(4).
avec option base 1
dim T(5) as... (ce que tu veux...) correspond au tableau T(1), T(2), T(3), T(4), T(5).
or "Ubound" renvoie, non pas une taille, mais l'indice le plus élevé de la dimension demandée (la première, par défaut, dans ce code). De même "Lbound" retourne l'indice inférieur.
Moralité : si on prend l'instruction
Let MaxP=Ubound(T)*BkSize
celle-ci suppose que le premier élément de T est T(1).
On peut s'affranchir de l'"option base" en la remplaçant par :
Let MaxP=(Ubound(T)-Lbound(T)+1)*BkSize
Les autres instructions seraient à modifier dans le même ordre d'idée : là où on adresse T(n), par exemple, il faudrait adresser T(Lbound(T)+n-1) et ainsi de suite.
Il me semblait donc plus "léger" (bon !) de fixer l'option base (plus pour dire que je la fixais, d'ailleurs, ce que tu as fort bien vu, que pour la fixer à "1" proprement dit) et d'avoir un code un peu moins lourd.
Pour ce qui est de l'envoi réseau, ce n'est pas vraiment un domaine que je pratique. Si tu veux, tu peux m'indiquer souci en me contactant directement. Pas la peine de développer trop, dans un premier temps, juste histoire de me faire une idée sur le problème.
Espérant avoir apporté une petite contribution, je vous remercie pour l'intérêt que vous y portez.
vlad2i
Messages postés285Date d'inscriptionmercredi 20 août 2003StatutMembreDernière intervention13 février 2005 16 août 2004 à 20:09
Il y a Option Base 0 et Option Implicit, qui sont par défaut
Option Base 1 définit le premier élément d'un tableau à 1 (au lieu de 0)
Option Explicit oblige à déclarer les variables (au lieu de les supposer en variant)
Valà
Sinon un bon code, bien que l'on doit pouvoir faire plus léger qd meme :)
ShadowMaster
Messages postés184Date d'inscriptionmercredi 27 novembre 2002StatutMembreDernière intervention18 août 2005 16 août 2004 à 02:12
a quoi sert "Option Base 1" ? y a t'il d'autre option à par base 1 et explicit?
Sinon ton code est pas mal, je le verrais bien couplé à tout se qui touche l'envoi reseau par contre je ne voi pas comment l'integrer.
Afyn
Messages postés608Date d'inscriptionsamedi 3 août 2002StatutMembreDernière intervention22 décembre 2016 15 août 2004 à 23:17
17 août 2004 à 08:21
ShadowMaster, tu as raison, "option Base 1" est, sommes toute, une contrainte inutile. J'ai donc modifié mon code dans ce sens. On n'est donc plus obligé de déclarer le tableau T(1..n).
Vlad2i, tu as raison, on peut simplifier. En fait, la première version positionnait le bit, en accord avec une valeur passée en argument, ce qui me faisait positionner le bit en 2 temps :
1 - RAZ ("and 0")
2 - positionnement ("or <valeur du bit")
A présent, ce n'est plus nécessaire, j'ai donc modifié le "case" en ce sens.
Toutefois, les valeurs de "C" ont été choisies de telle sorte que l'on peut toujours appeler la procédure, sans avoir testé au préalable la valeur que devra avoir le bit. il suffit de l'appeler ainsi :
RWCheckBit(T,P,abs(MonBooléen))
Quant à "Maxp", variable servant une seule fois (quel luxe !) je l'ai virée comme indiqué précédemment.
Merci beaucoup pour vos remarques qui me permettent de m'améliorer.
16 août 2004 à 20:50
Par contre option base 1 moué ça peu avoir son utilité mais bon, pas indispensable, on peu declarer son tableau comme ça:
Dim T (1 to 5) as ...
16 août 2004 à 20:40
J'écivais en même temps que toi ! lol !
Tu as raison : Je pourrais commencer par "virer" la variable "MaxP", par exemple. Enfin ! je ferai mieux (enfin... peut-être... :) ) la prochaine fois (l'espoir fait vivre, dit-on).
Encore merci à tous.
16 août 2004 à 20:32
Option Explicit est ici sans grande importance. Je la mets systématiquement car elle force à déclarer "explicitement" doute variable. Si on omet d'en déclarer une, cela provoque une erreur à la compilation. Je trouve simplement que c'est une bonne précaution, pour une bonne habitude.
Option Base 1, par contre est importante dans ce code. Elle fixe l'indice inférieur par défaut d'un tableau. Sans cette option, la valeur infèrieure d'indice pour un tableau est 0.
Dans ce cas :
dim T(5) as... (ce que tu veux...) correspondrait au tableau T(0), T(1), T(2), T(3), T(4).
avec option base 1
dim T(5) as... (ce que tu veux...) correspond au tableau T(1), T(2), T(3), T(4), T(5).
or "Ubound" renvoie, non pas une taille, mais l'indice le plus élevé de la dimension demandée (la première, par défaut, dans ce code). De même "Lbound" retourne l'indice inférieur.
Moralité : si on prend l'instruction
Let MaxP=Ubound(T)*BkSize
celle-ci suppose que le premier élément de T est T(1).
On peut s'affranchir de l'"option base" en la remplaçant par :
Let MaxP=(Ubound(T)-Lbound(T)+1)*BkSize
Les autres instructions seraient à modifier dans le même ordre d'idée : là où on adresse T(n), par exemple, il faudrait adresser T(Lbound(T)+n-1) et ainsi de suite.
Il me semblait donc plus "léger" (bon !) de fixer l'option base (plus pour dire que je la fixais, d'ailleurs, ce que tu as fort bien vu, que pour la fixer à "1" proprement dit) et d'avoir un code un peu moins lourd.
Pour ce qui est de l'envoi réseau, ce n'est pas vraiment un domaine que je pratique. Si tu veux, tu peux m'indiquer souci en me contactant directement. Pas la peine de développer trop, dans un premier temps, juste histoire de me faire une idée sur le problème.
Espérant avoir apporté une petite contribution, je vous remercie pour l'intérêt que vous y portez.
16 août 2004 à 20:09
Option Base 1 définit le premier élément d'un tableau à 1 (au lieu de 0)
Option Explicit oblige à déclarer les variables (au lieu de les supposer en variant)
Valà
Sinon un bon code, bien que l'on doit pouvoir faire plus léger qd meme :)
16 août 2004 à 02:12
Sinon ton code est pas mal, je le verrais bien couplé à tout se qui touche l'envoi reseau par contre je ne voi pas comment l'integrer.
15 août 2004 à 23:17
Bravo !
Afyn
Navedac