PixelGetColor : probleme hexadecimal / decimal

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
jeanglaude
Niveau 3
Niveau 3
Messages : 30
Enregistré le : sam. 01 mai 2021 10:13
Status : Hors ligne

PixelGetColor : probleme hexadecimal / decimal

#1

Message par jeanglaude »

je ne sais pas pourquoi dans 95% des cas ca marche bien avec l'hexadecimal

mais des fois ca bloque, alors je fais un msgbox et il me donne une valeur décimale

du coup je suis obligé de mettre 2 conditions, et là ca marche bien :

Code : Tout sélectionner


if PixelGetColor ( $xpix, $ypix) = "0x20354C" Or PixelGetColor ( $xpix, $ypix) = "8423825" Then

(je ne suis pas sur qu'il faille mettre des guillemets sur la valeur décimale, j'ai l'impression que les 2 cas ca marche)

est ce qu'il existe une fonction qui à partir de la valeur hexadécimale donne automatiquement la valeur décimale ?
ca m'éviterais de devoir faire un msgbox à chaque fois que ca coince

par exemple :

Code : Tout sélectionner


$color = "0x20354C"

if PixelGetColor ( $xpix, $ypix) = $color Or PixelGetColor ( $xpix, $ypix) = _ConvertDecimal($color) Then

comment ca se fait que ca réagisse pas toujours de la même manière ?
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2210
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: PixelGetColor : probleme hexadecimal / decimal

#2

Message par jchd »

D'après l'aide, que renvoie cette fonction ?
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
jeanglaude
Niveau 3
Niveau 3
Messages : 30
Enregistré le : sam. 01 mai 2021 10:13
Status : Hors ligne

Re: PixelGetColor : probleme hexadecimal / decimal

#3

Message par jeanglaude »

en sortie il ne renvoie que une valeur décimale, mais en entrée il accepte les 2

parfois dans de rares cas la valeur hexadécimale en entrée n'est pas acceptée ?

donc je lui met aussi la valeur décimale et là y'a plus de problème,
sauf que c'est contraignant de faire ca sur beaucoup de PixelGetColor
jeanglaude
Niveau 3
Niveau 3
Messages : 30
Enregistré le : sam. 01 mai 2021 10:13
Status : Hors ligne

Re: PixelGetColor : probleme hexadecimal / decimal

#4

Message par jeanglaude »

j'ai trouvé la fonction pour convertir de l'hexadecimal en decimal : Dec($monhexa) ou Dec("0x20354C")

Code : Tout sélectionner


$color = "0x20354C"

if PixelGetColor ( $xpix, $ypix) = $color Or PixelGetColor ( $xpix, $ypix) = Dec($color) Then

par contre je ne comprends pas pourquoi j'ai besoin de faire ca
puisque apparement la fonction PixelGetColor le fait déjà en interne

à chaque fois que j'ai eu ce genre de blocage j'ai été vérifié que mon pixel était toujours du code couleur exact d'avant,
et c'était toujours le cas, mais si je met pas une 2eme condition dans le IF des fois ca passe pas

étrange
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2210
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: PixelGetColor : probleme hexadecimal / decimal

#5

Message par jchd »

Et pourquoi pas, tout simplement :
$color = 0x20354C
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Avatar du membre
TommyDDR
Modérateur
Modérateur
Messages : 1989
Enregistré le : mar. 22 juil. 2008 21:55
Localisation : Nantes
Status : Hors ligne

Re: PixelGetColor : probleme hexadecimal / decimal

#6

Message par TommyDDR »

0x20354C est le représentation hexadécimale du nombre 2110796, mais pour votre ordinateur, c'est exactement la même chose
en revanche, "0x20354C" est une chaine de caractères et lors de la comparaison : 0x20354C == "0x20354C"
"0x20354C" va être transformer en entier (il me semble qu'il prend tous les chiffres jusqu'à trouver autre chose, donc ici -> 0
et 0 est différent de 0x20354C (2110796), cela va vous retourner faux.

alors que si vous comparez le retour de PixelGetColor (0x20354C) à la valeur 0x20354C , là on a bien quelque chose d'identique
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
jeanglaude
Niveau 3
Niveau 3
Messages : 30
Enregistré le : sam. 01 mai 2021 10:13
Status : Hors ligne

Re: PixelGetColor : probleme hexadecimal / decimal

#7

Message par jeanglaude »

ah ok donc un code couleur ne doit pas être traité comme une string, j'avais pas saisi ca, merci pour l'info
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2210
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: PixelGetColor : probleme hexadecimal / decimal

#8

Message par jchd »

Il ne s'agit pas d'un code couleur spécifiquement.
Une valeur numérique entière peut être spécifiée en hexa ou en décimal, l'interpréteur s'en moque.

Code : Tout sélectionner

Local $a = 0x1F018
Local $b = 127000
If $a = $b Then ConsoleWrite("$a = $b" & @LF)
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Répondre