Page 1 sur 1

PixelGetColor : probleme hexadecimal / decimal

Posté : lun. 31 mai 2021 22:42
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 ?

Re: PixelGetColor : probleme hexadecimal / decimal

Posté : lun. 31 mai 2021 23:59
par jchd
D'après l'aide, que renvoie cette fonction ?

Re: PixelGetColor : probleme hexadecimal / decimal

Posté : mer. 02 juin 2021 08:53
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

Re: PixelGetColor : probleme hexadecimal / decimal

Posté : mer. 02 juin 2021 09:02
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

Re: PixelGetColor : probleme hexadecimal / decimal

Posté : mer. 02 juin 2021 12:33
par jchd
Et pourquoi pas, tout simplement :
$color = 0x20354C

Re: PixelGetColor : probleme hexadecimal / decimal

Posté : mer. 02 juin 2021 16:17
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

Re: PixelGetColor : probleme hexadecimal / decimal

Posté : sam. 05 juin 2021 14:30
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

Re: PixelGetColor : probleme hexadecimal / decimal

Posté : sam. 05 juin 2021 23:24
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)