Page 1 sur 1

Lire nombre dans un combobox

Posté : jeu. 17 févr. 2022 14:13
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 ?

Re: Lire nombre dans un combobox

Posté : jeu. 17 févr. 2022 17:58
par mikell
Non, rien ne t'échappe et ta solution est la bonne :mrgreen:

Re: Lire nombre dans un combobox

Posté : jeu. 17 févr. 2022 20:18
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...

Re: Lire nombre dans un combobox  

Posté : ven. 18 févr. 2022 01:50
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.

Re: Lire nombre dans un combobox

Posté : ven. 18 févr. 2022 12:51
par walkson
Bonjour Jchd
merci pour l'explication