Page 1 sur 1
[R] Impossible de rappeler la valeur d'un input
Posté : mer. 05 mars 2014 13:21
par jerebou
Bonjour a tous
Je fais suite a ce topic:
http://www.autoitscript.fr/forum/viewto ... =4&t=11745
J'ai bien tout lu mais j'ai quand même un souci avec le bout de code suivant (le but est de récupérer le string entré dans $inputbox1, l'encoder en HTML grâce au include ci-joint et l’écrire ensuite dans un fichier texte):
► Afficher le texte
Code : Tout sélectionner
#include <File.au3>
#include <GUIConstantsEx.au3>
#include <EditConstants.au3>
#include <String.au3>
#include <HTML.au3>
GUICreate("URL builder",320,240,269,175)
$check1 = GUICtrlCreateCheckbox("Custom Description",5,5,150,20)
$inputbox1 = GUICtrlCreateInput("",5,30,100,20)
$input1 = GUICtrlRead($inputbox1)
$html1 = _HTMLEncode($input1)
$buildbutton = GUICtrlCreateButton("Build!",250,5,60,40)
GUISetState(@SW_SHOW)
GUICtrlSetState($buildbutton,$GUI_ENABLE)
GUICtrlSetState($input1,$GUI_DISABLE)
Func check1()
GUICtrlSetState($inputbox1, $GUI_ENABLE)
EndFunc
While 1
$msg = GUIGetMsg()
If $msg = -3 Then Exit
If $msg = $check1 Then check1()
If $msg = $buildbutton Then
FileWrite(@TempDir & "\guitest.txt", $html1)
Exit
EndIf
WEnd
Exit
Je précise qu'une MsgBox ne daigne même pas l'afficher donc je pense que $input1 n'est pas considérée comme un string mais alors que faire ?
Autre question sur le même cas, il semble que la fonction _HTMLEncode ne lise pas la valeur de $input1 mais se content d'encoder le string "$input1"...
Merci pour vos réponses.
Re: [...] Impossible de rappeler la valeur d'un input
Posté : mer. 05 mars 2014 13:40
par jguinch
La fonction GUICtrlRead va lire le contenu du champs de texte uniquement au moment où tu l'appelles, donc si tu places cette fonction juste derrière la création du champs, la valeur sera forcément nulle.
Il faut que tu lises le contenu tu champs au
moment du clic sur le bouton $buildbutton
Voici quelques modifications avec des commentaires, pour que tu comprennes les erreurs :
► Afficher le texte
Code : Tout sélectionner
#include <File.au3>
#include <GUIConstantsEx.au3>
#include <EditConstants.au3>
#include <String.au3>
#include <HTML.au3>
GUICreate("URL builder",320,240,269,175)
$check1 = GUICtrlCreateCheckbox("Custom Description",5,5,150,20)
$inputbox1 = GUICtrlCreateInput("",5,30,100,20)
$buildbutton = GUICtrlCreateButton("Build!",250,5,60,40)
GUISetState(@SW_SHOW)
GUICtrlSetState($buildbutton,$GUI_ENABLE)
GUICtrlSetState($inputbox1,$GUI_DISABLE) ; ici, c'est $inputbox1, pas $input1
Func check1()
; On test si $check1 est coché ou non et on active ou désactive le champs $inputbox1 en fonction
If GUICtrlRead($check1) = $GUI_CHECKED Then
GUICtrlSetState($inputbox1, $GUI_ENABLE)
Else
GUICtrlSetState($inputbox1, $GUI_DISABLE)
EndIf
EndFunc
While 1
$msg = GUIGetMsg()
If $msg = -3 Then Exit
If $msg = $check1 Then check1()
If $msg = $buildbutton Then
; on moment où l'utilisateur clique sur le bouton, on va lire la valeur du champs $inputbox1
$input1 = GUICtrlRead($inputbox1)
$html1 = _HTMLEncode($input1)
MsgBox(0, "_HTMLEncode", $input1)
FileWrite(@TempDir & "\guitest.txt", $html1)
Exit
EndIf
WEnd
Exit
Re: [...] Impossible de rappeler la valeur d'un input
Posté : mer. 05 mars 2014 14:01
par jerebou
Génial
Ça solutionne déjà la moitié du problème, car maintenant le string est bien recopié mais pas encodé.
Mais je n'ai probablement pas bien compris comment fonctionne l'UDF ?
J'ai testé ce qui suit au sein du HTML.au3 et ai bien eu un résultat correct:
Code : Tout sélectionner
Local $result = _HTMLEncode("this is a test")
MsgBox(0,"encoded",$result)
Re: [...] Impossible de rappeler la valeur d'un input
Posté : mer. 05 mars 2014 14:22
par jerebou
Résolu en changeant d'UDF (apparemment celui fourni est pas bon, celui ci-joint marche beaucoup mieux).
Bonne journée, et merci
Re: [...] Impossible de rappeler la valeur d'un input
Posté : mer. 05 mars 2014 14:24
par jguinch
jerebou a écrit : le string est bien recopié mais pas encodé
Dans mon code, j'affiche $input1 dans la MsgBox, mais si tu mets $html1, ça doit être bon, non ?
Re: [R] Impossible de rappeler la valeur d'un input
Posté : mer. 05 mars 2014 15:37
par jerebou
Ce n’était pas bon car mon UDF de départ était foireux et convertissait vers un mauvais jeu de caractères...
C'est ce qui m'a permis de savoir ou était la faille et donc en changeant l'UDF c'est tout bon.
Par contre maintenant j'ai un autre bémol mais je vais chercher un peu avant de reposter car c'est la GUI (ou moi) qui merdouille et je l'apprivoise tout juste.
En fait le code suivant:
Code : Tout sélectionner
Func checkbox_i()
GUICtrlSetState($inputbox_i,$GUI_ENABLE)
EndFunc
Semble ne pouvoir fonctionner que sur une checkbox a la fois.
Le contenu de toutes mes checkbox est bien grisé en revanche par défaut comme voulu.