Lire nombre dans un combobox

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Avatar du membre
walkson
Modérateur
Modérateur
Messages : 1020
Enregistré le : ven. 12 août 2011 19:49
Localisation : Hurepoix
Status : Hors ligne

Lire nombre dans un combobox

#1

Message par walkson »

Bonjour,
La lecture d'un nombre dans un combo renvoie un format string apparemment.

Code : Tout sélectionner

#include <ButtonConstants.au3>
#include <ComboConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <Array.au3>
Local $array[6] = [1,2,3,4,"b","a"]
$string = _ArrayToString($array)
Global $Form1 = GUICreate("Form1", 308, 127)
Global $Combo1 = GUICtrlCreateCombo("", 29, 16, 249, 25)
;GUICtrlSetData(-1,$string,1)
GUICtrlSetData(-1,"1|2|3|4|5|A|B",1)
Global $Button1 = GUICtrlCreateButton("Button1", 101, 56, 105, 49)
GUISetState(@SW_SHOW)

While 1
 $nMsg = GUIGetMsg()
 Switch $nMsg
  Case $GUI_EVENT_CLOSE
   Exit

	 Case $Button1
		 $lire = GUICtrlRead($Combo1)
		 ;$iData = Number($lire)
		 ;If $iData = 0 Then $iData = $lire
		 $iData = $lire
		 $nmb = IsNumber($iData)
		 $stg = IsString($iData)
		 MsgBox(0,"", "nombre " & $nmb & @CRLF & "texte " & $stg)
 EndSwitch
WEnd
Suis je obligé de convertir le nombre comme ceci dans le cas où il y a du texte et des nombres
 $lire = GUICtrlRead($Combo1)
       $iData = Number($lire)
       If $iData = 0 Then $iData = $lire
ou bien quelque chose m'échappe ?
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: Lire nombre dans un combobox

#2

Message par mikell »

Non, rien ne t'échappe et ta solution est la bonne :mrgreen:
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
walkson
Modérateur
Modérateur
Messages : 1020
Enregistré le : ven. 12 août 2011 19:49
Localisation : Hurepoix
Status : Hors ligne

Re: Lire nombre dans un combobox

#3

Message par walkson »

Bonjour Michel et merci pour ta réponse
En fait, je me suis embrouillé avec ceci
$aData = GUICtrlRead($Combo1)
       $aDataNames = _WinAPI_EnumResourceNames($file, $aData)
qui beug car $aData n'est pas reconnu comme un nombre (quand le nom est un nombre comme les Icons) alors que j'avais en souvenir
$aData = GUICtrlRead($Combo1)
$TT = $aData * 2
qui me renvoie un chiffre et qui ne devrait pas le faire en toute logique...
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2272
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : En ligne

Re: Lire nombre dans un combobox  

#4

Message par jchd »

Code : Tout sélectionner

$aData = GUICtrlRead($Combo1)
$TT = $aData * 2
qui me renvoie un chiffre et qui ne devrait pas le faire en toute logique...
La logique n'a rien à voir ici et dans ce cas l'intuition est mauvaise conseillère.

Code : Tout sélectionner

ConsoleWrite(Number("abc"))
ConsoleWrite(@LF)
; donc
ConsoleWrite("abc" + 1)
ConsoleWrite(@TAB)
ConsoleWrite("4abc" + 1)
ConsoleWrite(@LF)
montre (comme nous le dit l'aide) qu'AutoIt convertit automagiquement une chaîne en valeur numérique lorsqu'elle est impliquée dans un calcul arithmétique.

Voir Language Reference - Datatypes :
...
If a string is used as a number, an implicit call to Number() function is done. So if it doesn't contain a valid number, it will be assumed to equal 0. For example,

10 * "fgh" equals the number 0.

If a string is used as a boolean and it is an empty string "" , it will be assumed to equal False (see below). For example,

Not "" equals the Boolean True.
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Avatar du membre
walkson
Modérateur
Modérateur
Messages : 1020
Enregistré le : ven. 12 août 2011 19:49
Localisation : Hurepoix
Status : Hors ligne

Re: Lire nombre dans un combobox

#5

Message par walkson »

Bonjour Jchd
merci pour l'explication
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
Répondre