Page 1 sur 1
Comment lire les |
Publié : dim. 15/mai/2016 17:34
par microdevweb
Bonjour,
Imaginons que j'écrive dans une variable à la manière des constantes PureBasic
Exemple:
J'aimerais pouvoir lire les constantes (valeurs) une à une et dans l'ordre, cela doit être tous simple, mais moi et les opérateurs binaire....
Merci d'avance
Re: Comment lire les |
Publié : dim. 15/mai/2016 19:02
par Micoute
FindString() à tout hasard.
Re: Comment lire les |
Publié : dim. 15/mai/2016 19:05
par Fig
Désolé mais je ne comprends pas l’intérêt... Tu as les 3 constantes... heu...

Re: Comment lire les |
Publié : dim. 15/mai/2016 19:10
par falsam
Micoute a écrit :FindString() à tout hasard.
FindString pour une variable numérique ? ^^
Tout comme fig, Micro il va falloir développer un peu plus.
Re: Comment lire les |
Publié : dim. 15/mai/2016 19:15
par Fig
De toute façon, les 3 constantes n'ont plus d'existence une fois le programme compilé.
Le compilateur fait le calcul avant la compilation puisque ce sont des valeurs fixes.
Par conséquent, il est vain d'essayer des les extraire de la variable key.
Re: Comment lire les |
Publié : dim. 15/mai/2016 20:00
par microdevweb
C'est pour faire une gestion de Shortcut, je pensais cela possible... Maintenant si vous me dites que non je verrais à faire autrement.
Re: Comment lire les |
Publié : dim. 15/mai/2016 20:06
par Shadow
A tout hasard:
Essais ça:
Code : Tout sélectionner
If key & #PB_Shortcut_Control & #PB_Shortcut_Alt & #PB_Shortcut_S
EndIf
Exemple:
Code : Tout sélectionner
Option.i = #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_ScreenCentered | #PB_Window_TitleBar
If Option.i & #PB_Window_SystemMenu & #PB_Window_TitleBar
Debug 2
EndIf
If Option.i & #PB_Window_MinimizeGadget & #PB_Window_MinimizeGadget
Debug 3
EndIf
If Option.i & #PB_Window_ScreenCentered
Debug 4
EndIf
If Option.i & #PB_Window_MinimizeGadget & 1
Debug 5
EndIf
If Option.i & #PB_Window_TitleBar
Debug 6
EndIf
C'est assez compliqué mais avec les constantes PB ça fonctionne, avec des constante perso, moins sur !
Sinon si c'est pas se que tu veux, sache que c'est pas possible je crois comme dit Fig:
Le compilateur fait le calcul avant la compilation puisque ce sont des valeurs fixes.
Par conséquent, il est vain d'essayer des les extraire de la variable key.
Re: Comment lire les |
Publié : dim. 15/mai/2016 22:19
par microdevweb
Bien essayé shadow, cela aurait pu marché comme le fait la commande
GetGadgetItemState
Par contre le teste ci-dessous n'est pas concluant
Code : Tout sélectionner
key=#PB_Shortcut_Control|#PB_Shortcut_Alt|#PB_Shortcut_N
If key & #PB_Shortcut_Control
Debug "True"
Else
Debug "False"
EndIf ; Return True
If key & #PB_Shortcut_Alt
Debug "True"
Else
Debug "False"
EndIf ;Return True
If key & #PB_Shortcut_Control|#PB_Shortcut_Alt
Debug "True"
Else
Debug "False"
EndIf ; Return True
If key & #PB_Shortcut_Control|#PB_Shortcut_Shift
Debug "True"
Else
Debug "False"
EndIf ; Return True (la c'est un hic)
If key & #PB_Shortcut_Shift
Debug "True"
Else
Debug "False"
EndIf ; Return False
If key & #PB_Shortcut_N
Debug "True"
Else
Debug "False"
EndIf ; Return True
If key & #PB_Shortcut_A
Debug "True"
Else
Debug "False"
EndIf ; Return True (la c'est un hic)
Re: Comment lire les |
Publié : dim. 15/mai/2016 22:44
par Bill Gates
Les bases de la programation...
Code : Tout sélectionner
#CONST_A = $0001
#CONST_B = $0010
#CONST_C = $0100
#CONST_D = $1000
Var.l = #CONST_B | #CONST_D
If Var & #CONST_A
Debug "A!"
EndIf
If Var & #CONST_B
Debug "B!"
EndIf
If Var & #CONST_C
Debug "C!"
EndIf
If Var & #CONST_D
Debug "D!"
EndIf
If (Var & #CONST_B) And (Var & #CONST_D)
Debug "B & D!"
EndIf
vos constantes / variable doivent avoir des valeurs cohérentes pour un "bit masking".
Re: Comment lire les |
Publié : dim. 15/mai/2016 23:36
par microdevweb
@Bill Gates,
Bon à savoir merci
Re: Comment lire les |
Publié : lun. 16/mai/2016 7:13
par Micoute
Veuillez m'excuser pour l'aberration que j'ai pu écrire, évidemment FindString() ne peut fonctionner pour les string. A quand le FindNum() ?
Re: Comment lire les |
Publié : lun. 16/mai/2016 10:34
par blendman
@Micro : l'autre possibilité, si tu as des constantes diverses (donc, le code précédent ne marcherait pas), c'est de convertir ta key en string, puis d'utiliser le findstring() comme Micoute l'a suggéré
Code : Tout sélectionner
key=#PB_Shortcut_Control|#PB_Shortcut_Alt|#PB_Shortcut_N
key$ = Str(#PB_Shortcut_Control)+"|"+Str(#PB_Shortcut_Alt)+"|"+Str(#PB_Shortcut_N)
Debug key$
If FindString(key$,Str(#PB_Shortcut_Control))
Debug "ctrl !"
Else
Debug "False pour ctrl"
EndIf
If FindString(key$,Str(#PB_Shortcut_Alt))
Debug "alt !"
EndIf
If FindString(key$,Str(#PB_Shortcut_N))
Debug "N !"
EndIf
If FindString(key$,Str(#PB_Shortcut_Control)) And FindString(key$,Str(#PB_Shortcut_Alt))
Debug "ctrl|alt !"
EndIf
If FindString(key$,Str(#PB_Shortcut_Control)) And FindString(key$,Str(#PB_Shortcut_Shift))
Debug "ctrl|alt !"
Else
Debug "pas shift | ctrl"
EndIf
If FindString(key$,Str(#PB_Shortcut_Shift))
Debug "shift Ok !"
Else
Debug "pas shift"
EndIf
If FindString(key$,Str(#PB_Shortcut_A))
Debug "A Ok !"
Else
Debug "pas A"
EndIf
ça n'est pas top, mais ça marche ^^.
Après dans ton programme, j'imagine que tu vérifie si on appuies sur une série de touche.
Ce que je fais personnellement, pour vérifier l'action sur les touches, c'est de conserver certaines comme ctrl, shift et alt, et de vérifier les autres ensuite :
Code : Tout sélectionner
If Ctrl = 1
If alt = 1
If shift = 1
Else
EndIf
Else
EndIf
Else
If alt = 1
If shift = 1
Else
EndIf
Else
EndIf
EndIf
Ce n'est pas top non plus, mais ça fonctionne aussi ^^.
Re: Comment lire les |
Publié : lun. 16/mai/2016 11:16
par Ar-S
Salut les copains.
Tu peux les convertir en string comme l'a suggéré Blendman et utiliser stringfield, il est fait pour ça.
Code : Tout sélectionner
Debug "Val des constantes : "
key=#PB_Shortcut_Control|#PB_Shortcut_Alt|#PB_Shortcut_N
Debug key
Debug""
Debug "Conversion en String"
key$ = Str(#PB_Shortcut_Control)+"|"+Str(#PB_Shortcut_Alt)+"|"+Str(#PB_Shortcut_N)
Debug Key$
Debug ""
Debug "Extraction"
For i = 1 To CountString(key$,"|")+1
Debug StringField(Key$,i,"|")
Next
Re: Comment lire les |
Publié : lun. 16/mai/2016 18:09
par microdevweb
Mercie Ar-s et Blendman,
Mais j'ai opté pour une liste.
Re: Comment lire les |
Publié : mar. 17/mai/2016 9:46
par Fig
microdevweb a écrit :C'est pour faire une gestion de Shortcut, je pensais cela possible... Maintenant si vous me dites que non je verrais à faire autrement.
Haaaaaa c'est plus clair avec l'explication.
Tu peux faire comme ça, même si c'est trop tard...
Code : Tout sélectionner
key=#PB_Shortcut_Control|#PB_Shortcut_Alt|#PB_Shortcut_S|#PB_Shortcut_Shift
If key&#PB_Shortcut_Control:Debug "control pressé":EndIf
If key&#PB_Shortcut_Alt:Debug "Alt pressé":EndIf
If key&#PB_Shortcut_Shift:Debug "Shift pressé":EndIf
Debug "touche : "+Chr(key) ;pas besoin de masquer car chr tronque lui-même les bits inutiles....
Comme le dit Billou, il faut que les masques soient adaptés. Heureusement c'est le cas pour les touches Ctrl, shift et Alt par exemple. Ca ne fonctionne pas si tu presse 2 touches alphanumériques ensemble par contre (ou alors par hasard)