hex pixelgetcolor sur 6 digit : avec ou sans 00 devant ?

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
IsLaMalice
Niveau 4
Niveau 4
Messages : 50
Enregistré le : lun. 03 avr. 2017 23:31
Status : Hors ligne

hex pixelgetcolor sur 6 digit : avec ou sans 00 devant ?  

#1

Message par IsLaMalice »

Bonjour,

un truc que je trouve curieux, si vous pouvez m'aider...

quand j'utilise hex(PixelGetColor(x,y),6)

parfois il faut mettre "00" devant, parfois non. Savez vous pourquoi ?

avec :
While hex(PixelGetColor(x,y),6)) <> "00D9D9D9"

sans :
if hex(PixelGetColor(x,y),6)="CFCFE6" then





IslaMalice


PS : si cela ce trouve, cela contient la réponse de ce sujet de 2011 :
https://www.autoitscript.fr/forum/viewt ... lor#p56554
IsLaMalice
Niveau 4
Niveau 4
Messages : 50
Enregistré le : lun. 03 avr. 2017 23:31
Status : Hors ligne

Re: hex pixelgetcolor sur 6 digit : avec ou sans 00 devant ?

#2

Message par IsLaMalice »

hum.. c'est mes yeux ??


avec ce bout de code, pour l'exemple, il faut bien toujours mettre que 6 digits...
pourquoi dans mon programme il a fallut mettre 00 devant ?

Code : Tout sélectionner

Opt("WinTitleMatchMode", -2)     ;1=start, 2=subStr, 3=exact, 4=advanced, -1 to -4=Nocase
HotKeySet("{ESC}", "Quitter")

if WinExists("Paint") then
 	WinActivate("Paint")
	WinWaitActive("Paint")
Else
	MsgBox(0,"","Lancer Paint")
	Exit
EndIf

if hex(PixelGetColor(100,200),6)="FFFFFF" then msgbox(0,"FFFFFF","Le fond est bien blanc")


While hex(PixelGetColor(100,200),6) <> "000000"
	sleep(1000)
Wend
msgbox(0,"00000000","Il a été mis noir")


#cs
blanc	FFFFFF
rouge	FF0000
vert 	00FF00
bleu	0000FF
noir	000000
#ce


Func quitter()
	Exit
EndFunc
Avatar du membre
TomAijerrie
Niveau 5
Niveau 5
Messages : 192
Enregistré le : lun. 02 juin 2014 09:55
Localisation : Lyon
Status : Hors ligne

Re: hex pixelgetcolor sur 6 digit : avec ou sans 00 devant ?

#3

Message par TomAijerrie »

C'est étrange en effet,
hex(PixelGetColor(x,y),6)) <> "00D9D9D9" doit toujours retourner VRAI, car hex(PixelGetColor(x,y),6)) retourne une chaine de 6 caractères.
Mais on peut contourner ce problème.

Code : Tout sélectionner

While PixelGetColor(x,y) <> 0xD9D9D9
If PixelGetColor(x,y) = 0xCFCFE6 Then
Là on compare des nombres et non plus des chaines de caractères, il enlève tous seul les 0 inutiles.
IsLaMalice
Niveau 4
Niveau 4
Messages : 50
Enregistré le : lun. 03 avr. 2017 23:31
Status : Hors ligne

Re: hex pixelgetcolor sur 6 digit : avec ou sans 00 devant ?

#4

Message par IsLaMalice »

merci du conseil, je n'ai toujours pas testé mais sur que ta proposition est meilleure, merci !

en revanche, j'ai trouvé le souci dans mon programme !!!!
un probleme beta de position de parenthese !!! je viens de m'en rendre compte.... :oops:

j'avais noté :
hex(PixelGetColor(x,y,6))

forcément,... 6 etait le handle sur pixelgetcolor, et hex n'avais pas 6 bits....

je teste d'abord et je marque résolu sur ce sujet asap !

Is
Répondre