Page 2 sur 3
Re: [Ex] Créez un système de "flag" pour vos fonctions !
Posté : mar. 16 août 2011 00:17
par mikell
Bah le SDZ dit bien
les flags sont des constantes
Après, est-il vraiment indispensable de remplir son code de Bit... pour faire comprendre le concept à un
débutant, même si c'est juste, ça peut se discuter
Re: [Ex] Créez un système de "flag" pour vos fonctions !
Posté : mar. 16 août 2011 01:14
par matwachich
Les bits sont indispensables pour que les flags puisses être additionnés (comme les style de GuiCreate par exemple) (PS: je peux très bien me tromper!)
Sans bits, sauf grosse manipulations (pleins de if ...), on ne pourrait mettre qu'un flag à la fois.
Re: [Ex] Créez un système de "flag" pour vos fonctions !
Posté : mar. 16 août 2011 01:51
par Iste
Les flags sont des constantes oui, mais pas n'importe les quelles !
Comme l'explique bien le tuto et comme vous l'avez bien compris, ces constantes correspondent aux bit d'un nombre binaire, soit en décimal 1, 2, 4, 8 etc...
Et comme vous l'explique matwachich cela est indispensable pour pouvoir faire un systeme de flag dans lequel les valeur sont additionnées puis extraite par un AND dans la fonction.
Sans cela, il ne s'agit que d'un paramètre de fonction numérique.
Donc justement, le concept des flag c'est ca, transformer les bit en boolean, ce qui permet d'
utiliser une seule variable pour envoyer plusieurs vrai/faux en les rendant facultatif.
explications :
http://autoitscript.fr/forum/viewtopic. ... 355#p53355
Et je pense que, surtout pour un débutant, il vaut mieux clarifier les choses pour ne pas leur apprendre des choses fausses.
Note : servabat dans son message (
http://autoitscript.fr/forum/viewtopic. ... 358#p53358) propose ce qui peut etre une alternative aux bit : les nombres premiers. En les multipliant on peut créer le meme effet
ex : 105 est une combinaison de 3, 4 et 7 et le modulo nous permet de les tester.
Si c'est sympa en maths, en programmation on préférera les bit, qui grâce aux opérateurs bit a bit rendent la choses tres légère et pratique.
Re: [Ex] Créez un système de "flag" pour vos fonctions !
Posté : mar. 16 août 2011 02:05
par mikell
Il ne s'agit pas d'apprendre des choses fausses mais de rendre certaines explications aisément compréhensibles et accessibles au vulgum pecus qui n'a pas une formation de programmeur et qui appréhende le binaire comme d'autres le chinois
Fichier d'aide (MsgBox) a écrit :For example, to specify a SYSTEMMODAL box with the YES/NO buttons the flag value would be 4096+4 (or 4100) If using hexadecimal flags, that would be 0x1000+0x4 (or 0x1004).
Fichier d'aide (GUICtrlSetResizing) a écrit :$GUI_DOCKALL 802 (2+32+256+512) so the control will not move during resizing
Point de bits là-dedans, pourtant les valeurs sont combinées
on parle bien de flag mais là, on comprend de suite. J'avoue à ma grande honte ramer souvent parmi les Bit...() mais arriver quand même à me débrouiller avec les flags, serais-je un cas ?

Re: [Ex] Créez un système de "flag" pour vos fonctions !
Posté : mar. 16 août 2011 09:09
par Tlem
Je suis d'accord avec mikell.
Avant d'étaler la science du flag dans son entier, il faut que le 'vulgum pecus' appréhende la notion de flag, qui sur une fonction de base représente la plupart du temps deux valeurs définies : 0 ou 1.
Ensuite et donc dans un deuxième temps, il peut être envisagé d'expliquer la notion de flag avec plus de valeurs et donc cette notion de bits combinables, mais en restant simple tel que les explications données pour la MsgBox (ou plus simple encore).
Re: [Ex] Créez un système de "flag" pour vos fonctions !
Posté : mar. 16 août 2011 11:34
par MrDynoland
J'ai compris que Iste et matwachich sont des pro, je répte tous comme mikell le dit, c'est pour un débutant.
Parlez-vous de bit avec une personne qui commence a comprend un language illeco ? Comprenez que apart vous il y a des personne qui ne sont pas encore professionnel et je essaye de les aider au maximun pour arriver un jour à réussir.
Merci de votre compréhension.
PS : Une petit modif' dans mon code et vous pouvez faire une addition en un clin d’œil.
Re: [Ex] Créez un système de "flag" pour vos fonctions !
Posté : mar. 16 août 2011 12:11
par Iste
@mikell : "Point de bits là-dedans" ? et que sont 2+32+256+512 alors ? Bah des bit justement ^^
Et non justement, pas besoin de comprendre comment ca marche pour savoir l'utiliser, c'est l'une des grandes forces du flag.
@Tlem : oui en effet, un booléen 0/1 passé en paramètre d'une fonction est un flag simple. Seulement, encore une foi, ici, c'est pas ca
@MrDynoland : J'ai bien compris votre intention et le problème n'est pas là.
Es-ce que je parlerai de bit a un débutant ? Non, en effet. Pas si je lui explique comment se servir de flag.
Mais si je lui propose de mettre en place des flag dans ses fonctions, alors oui, il faut en parler

ces notions sont indissociables.
Donc le problème n'est pas de proposer un code simple qui pourrait aider des débutants a se lancer.
Le seul problème ici est qu'on ne parle pas du tout de flag alors qu'ils en sont le sujet. C'est simplement ce que je veux vous faire remarquer.
Re: [Ex] Créez un système de "flag" pour vos fonctions !
Posté : mar. 16 août 2011 13:01
par Tlem
Iste a écrit :@Tlem : oui en effet, un booléen 0/1 passé en paramètre d'une fonction est un flag simple. Seulement, encore une foi, ici, c'est pas ca

Je ne peut pas être entièrement d'accord avec toi, car sur le message d'origine, il est question de donner une valeur qui renverra le nom du jour de la semaine qui lui correspond.
Nous avons donc une base pour un exemple de flag, mais qui n'est pas exploitée correctement.
De plus, tu précise que la notion de flag est la possibilité de combiner ceux-ci afin de gérer plusieurs conditions simultanées ! Certes, mais pas seulement, car dans certains cas, les flag ne se combinent pas et ne sont même pas calculés en ce sens.
Prend l'exemple des flag d'erreur, ou de certaines fonctions comme
DriveMapAdd ou
FileCopy qui ont comme flag : 0, 1 et 8.
Le mieux, au lieu de tourner ce sujet en troll, est de rester dans le cadre de AutoIt et de commencer à expliquer simplement le flag, à l'image de
ceci, ou les explications restent simple et à la portée d'un débutant, puis pour les plus 'expérimentés', la suite
ici.
Il est inutile dans un premier temps de parler de bit et de combinaisons de bits, par contre, il est indispensable d'y faire référence dans un sujet plus détaillé.
Re: [Ex] Créez un système de "flag" pour vos fonctions !
Posté : mar. 16 août 2011 13:34
par Iste
Mais mais...
Loin de moi l'idée de troller tu le sais bien
il est question de donner une valeur qui renverra le nom du jour de la semaine qui lui correspond.
Donc il s'agit d'un paramètre simple et bête.
@§2 : Pour les "flag d'erreur" c'est un abus de langage, on parle normalement de code d'erreur, car en effet, ce ne sont pas des flag. On peut toute foi voir des flag d'erreur dans une fonction, il s'agit alors d'un booleen qui passe a true si tout ne se passe pas bien. Mais ca reste du 0/1.
Et pour les deux fonction citées, c'est pourtant bien un flag comme je l'explique Oo
"a combination of the following" avec les bit 0001 et 1000 (certes, pas forcément le plus logique)
Mais on a donc pour FileCopy bien un flag, avec pour valeur 1 pour l'overwrite et 8 pour le creat dir. La fonction analyse le flag pour savoir si l'on veut les deux, aucun ou un seul.
Donc je sais pas si c'est moi qui m'exprime mal ou si je zap quelque chose mais une foi de plus, dans l'exemple donné on ne voit pas de flag, même
simplifié pour les débutants, on a juste un paramètre de fonction tout bête.
Un flag lui est un paramètre de fonction spécial.
C'est pour cela que je tenais a bien faire comprendre la différence a un éventuel débutant qui viendrai lire ce topic, pour ne pas qu'il y ai de confusion.
M'enfin, je ne continuerai pas, sauf si on me le demande, la discutions, je pense avoir tout dis. J'ouvrirai peut être un topic tuto flag si j'en trouve le temps, pour bien que tout soit claire.
Re: [Ex] Créez un système de "flag" pour vos fonctions !
Posté : mar. 16 août 2011 18:14
par matwachich
mikell a écrit :Fichier d'aide (GUICtrlSetResizing) a écrit :$GUI_DOCKALL 802 (2+32+256+512) so the control will not move during resizing
Point de bits là-dedans, pourtant les valeurs sont combinées
Ah bon??? c'est pas des bits ça???
Multiples de 2, combinés avec la fonction OR (qui, on le rappel, correspond au +)... 9a ne vous rappel rien???
PS: Dans une fonction comme GuiCreate, pour combiner des flags de style on nous dit d'utiliser BitOR, mais essayez donc avec + et vous verrez que ça ne change rien!
Re: [Ex] Créez un système de "flag" pour vos fonctions !
Posté : mar. 16 août 2011 18:53
par timmalos
matwachich a écrit :PS: Dans une fonction comme GuiCreate, pour combiner des flags de style on nous dit d'utiliser BitOR, mais essayez donc avec + et vous verrez que ça ne change rien!
La, je me permet d'intervenir

Vous avez peut etre l'impression que ca ne change rien, car les constantes ont été bien choisies , mais ce n'est PAS la même chose.
► Afficher le texte
Code : Tout sélectionner
#include <WindowsConstants.au3>
$return = Binary($WS_CAPTION+$WS_POPUP+$WS_SYSMENU+$DS_MODALFRAME+$WS_TABSTOP+$WS_EX_ACCEPTFILES+$WS_EX_CONTEXTHELP+$WS_EX_TOOLWINDOW)
$return2 = Binary(BitOR($WS_CAPTION,$WS_POPUP,$WS_SYSMENU,$DS_MODALFRAME,$WS_TABSTOP,$WS_EX_ACCEPTFILES,$WS_EX_CONTEXTHELP,$WS_EX_TOOLWINDOW))
MsgBox(0,"",$return&@CRLF &$return2)
Re: [Ex] Créez un système de "flag" pour vos fonctions !
Posté : mar. 16 août 2011 19:17
par mikell
Tlem je ne voudrais pas que ça passe pour du troll mais j'ai l'impression (et ce n'est pas la première fois) d'une sorte de fossé d'incompréhension entre les pros de l'informatique et les programmeurs novices, ce qui parait évident aux uns est ardu pour les autres
D'ailleurs les posts précédents montrent que même les pros ne sont pas d'accord... vous imaginez le débutant qui débarque là-dedans ?!
matwachich, dans "802 (2+32+256+512)" je vois pas des bits, je vois des chiffres, pas vous ?
Mais oui je suis d'accord, j'aurais dû mettre la majuscule
Bit...
Excusez-moi de me répéter mais on parle d'essayer de renseigner des débutants... et comprenez que pour un débutant, non 9a ne rappelle rien, et 'OR correspondant à + ' n'est pas d'une évidence folle (OR veut dire "ou", a priori...)
802 = 2+32+256+512 : pas besoin de grandes connaissances pour comprendre ça
timmalos cet exemple est étrange car il combine des constantes style et exstyle qui en principe ne sont pas combinables, ce qui explique (peut-être...?) les différences de résultat
EDIT

coquin timmalos, dans les tables style et exstyle certaines constantes ont des valeurs identiques... un exemple "légal" fonctionne bien comme matwachich le dit
► Afficher le texte
Code : Tout sélectionner
#include <WindowsConstants.au3>
$return = Binary($WS_CAPTION+$WS_POPUP+$WS_SYSMENU+$DS_MODALFRAME+$WS_TABSTOP) ;+$WS_EX_ACCEPTFILES+$WS_EX_CONTEXTHELP+$WS_EX_TOOLWINDOW)
$return2 = Binary(BitOR($WS_CAPTION,$WS_POPUP,$WS_SYSMENU,$DS_MODALFRAME,$WS_TABSTOP)) ;,$WS_EX_ACCEPTFILES,$WS_EX_CONTEXTHELP,$WS_EX_TOOLWINDOW))
$return3 = Binary($WS_EX_ACCEPTFILES+$WS_EX_CONTEXTHELP+$WS_EX_TOOLWINDOW)
$return4 = Binary(BitOR($WS_EX_ACCEPTFILES,$WS_EX_CONTEXTHELP,$WS_EX_TOOLWINDOW))
MsgBox(0,"",$return&@CRLF &$return2&@CRLF &@CRLF &$return3&@CRLF &$return4)
Re: [Ex] Créez un système de "flag" pour vos fonctions !
Posté : mar. 16 août 2011 19:26
par Iste
@all :
http://autoitscript.fr/forum/viewtopic.php?f=11&t=8211
vala ^^ J’espère que tout le monde y trouvera son bonheur.
La réponse au probleme soulevé par matwachich et timmalos se trouve a la fin de la 2em partie.
Re: [Ex] Créez un système de "flag" pour vos fonctions !
Posté : mar. 16 août 2011 20:06
par mikell
Merci pour ce tutoriel très complet
Ceci n'est pas un tuto technique
Ya même de l'humour

Re: [Ex] Créez un système de "flag" pour vos fonctions !
Posté : mar. 16 août 2011 21:20
par timmalos
Hmmm je differenciais juste l'utilisation d'un bitOR et d'une addition. Comme ecrit precedemment les 'flags' sont choisis pour qu' une addition ne pose pas de soucis, mais MATHEMATIQUEMENT les calculs effectués ne sont pas les mêmes, je voulais juste soutenir ce point.
Re: [Ex] Créez un système de "flag" pour vos fonctions !
Posté : mar. 16 août 2011 21:59
par Tlem
Je trouve ce tutoriel intéressent, ceci-dit, il comporte quelques 'erreurs' de présentations et de cheminement qui pourraient perturber un débutant.
Le temps de rédiger les points négatifs et j'en ferais part à Iste afin qu'il puisse corriger son travail.
Re: [Ex] Créez un système de "flag" pour vos fonctions !
Posté : dim. 21 août 2011 08:48
par Tlem
N'étant pas d'accord sur la manière de présenter cette partie :
- - Trop simplifiée et pas complète dans ce sujet.
- Trop technique et pas assez détaillée dans le tutoriel de Iste.
J'ai moi même rédigé un tutoriel, qui, je pense, est plus complet.
Ceci dit, j'ai conscience des difficultés de compréhension d'un utilisateur novice sur un sujet aussi complexe que celui-ci, car l'utilisation du système de flag dans AutoIt n'est pas aussi simple que certains peuvent le penser.
Certes, une fois qu'on maitrise une certaine logique, cela ce passe sans douleurs. Mais j'imagine bien que beaucoup ne voient dans tout cela que des trucs compliqués de 0, de 1, de nombres hexadécimaux et de puissances de 2 !!!
C'est pourquoi, avant de donner le lien vers celui-ci, je souhaiterais obtenir l'avis de lecture d'un ou plusieurs membres
novice sur ce sujet, afin de simplifier ou éclaircir les passages les plus compliqués.
Pour ceux qui souhaiterait participer, merci de m'envoyer un MP.
PS: Merci à mikell qui s'occupe de la correction orthographique.

Re: [Ex] Créez un système de "flag" pour vos fonctions !
Posté : sam. 27 août 2011 11:59
par Tlem
Bien, puisque personne ne se bat pour me donner son avis, je vous le fournit tel quel :
Les Fonctions et les Flags
Re: [Ex] Créez un système de "flag" pour vos fonctions !
Posté : sam. 27 août 2011 12:02
par MrDynoland
Il faut ce vouer a l'idée, c'est la fin du topic, trop de débat tu le débat ! xD
Re: [Ex] Créez un système de "flag" pour vos fonctions !
Posté : sam. 27 août 2011 15:01
par mikell
Tlem a écrit :Bien, puisque personne ne se bat pour me donner son avis, je vous le fournit tel quel
Vous fâchez pas, si plus personne ne lit ce topic à part les modos vous risquez effectivement d'avoir peu de réponses
Pour ce genre de demande, je ne vois que le nouveau sujet ou le MP à des utilisateurs que vous "sentez"
