Aide et conseils concernant AutoIt et ses outils.
Bonjour
Niveau 5
Messages : 138 Enregistré le : ven. 06 juin 2014 08:27
Status :
Hors ligne
#1
Message
par Bonjour » mar. 15 juil. 2014 11:56
Bonjour je cherche depuis longtemps une fonction qui exécuterai un string,exemple:
► Afficher le texte
Code : Tout sélectionner
$int=0
$string="$int=5"
fonction($string)
;$int vaut maintenant 5
Pour ceux qui se demande pourquoi je n'ai pas mis directement $int=5 c'est parce qu'en faite je voudrais récupérer ce string depuis un input comme ça je pourrais modifier les variables de mon prog même une fois lancer.
J'avais pensé a Execute() mais ça ne peut pas marcher car ceci ne fait que renvoyer un nombre.
Merci d'avance
Modifié en dernier par
Bonjour le mar. 15 juil. 2014 13:51, modifié 1 fois.
jguinch
Modérateur
Messages : 2515 Enregistré le : lun. 14 févr. 2011 22:12
Status :
Hors ligne
#2
Message
par jguinch » mar. 15 juil. 2014 13:38
Un truc comme ça ?
► Afficher le texte
Code : Tout sélectionner
$int=0
fonction("$int=5")
;$int vaut maintenant 5
Func fonction($sExp)
If NOT StringRegExp($sExp, "^\$[^=]+=.+") Then Return 0
Local $sVar = StringRegExpReplace($sExp, "^\$([^=]+)\h*=.*", "$1")
Local $sVal = StringRegExpReplace($sExp, ".*?=(.*)", "$1")
If StringRegExp($sVal, '^".*"$') Then
$sVal = StringRegExpReplace($sVal, '^"(.*)"$', "$1")
ElseIf StringRegExp($sVal, "^'.*'$") Then
$sVal = StringRegExpReplace($sVal, "^'(.*)'$", "$1")
EndIf
Return Assign($sVar, $sVal, 2)
EndFunc
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Bonjour
Niveau 5
Messages : 138 Enregistré le : ven. 06 juin 2014 08:27
Status :
Hors ligne
#3
Message
par Bonjour » mar. 15 juil. 2014 13:51
Sa fonctionne super bien merci
mikell
Spammer !
Messages : 6292 Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status :
Hors ligne
#4
Message
par mikell » mar. 15 juil. 2014 22:55
On se fait plaisir jguinch ?
Code : Tout sélectionner
$int=0
fonction("$int=5")
msgbox(0,"", $int) ; $int vaut maintenant 5
Func fonction($sExp)
;~ $s = StringSplit($sExp, "=")
;~ Assign(StringTrimLeft($s[1], 1), $s[2])
$s = StringRegExp($sExp, '\w+', 3)
Assign($s[0], $s[1])
EndFunc
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
jguinch
Modérateur
Messages : 2515 Enregistré le : lun. 14 févr. 2011 22:12
Status :
Hors ligne
#5
Message
par jguinch » mar. 15 juil. 2014 23:11
oui Mikell...
C'était pour couvrir un peu plus large que la demande. La preuve :
► Afficher le texte
Code : Tout sélectionner
$str = ""
fonctionMikell("$str=c'est pas cool")
msgbox(0,"", $str)
fonctionJguinch("$str=c'est cool")
msgbox(0,"", $str)
Func fonctionMikell($sExp)
;~ $s = StringSplit($sExp, "=")
;~ Assign(StringTrimLeft($s[1], 1), $s[2])
$s = StringRegExp($sExp, '\w+', 3)
Assign($s[0], $s[1])
EndFunc
Func fonctionJguinch($sExp)
If NOT StringRegExp($sExp, "^\$[^=]+=.+") Then Return 0
Local $sVar = StringRegExpReplace($sExp, "^\$([^=]+)\h*=.*", "$1")
Local $sVal = StringRegExpReplace($sExp, ".*?=(.*)", "$1")
If StringRegExp($sVal, '^".*"$') Then
$sVal = StringRegExpReplace($sVal, '^"(.*)"$', "$1")
ElseIf StringRegExp($sVal, "^'.*'$") Then
$sVal = StringRegExpReplace($sVal, "^'(.*)'$", "$1")
EndIf
Return Assign($sVar, $sVal, 2)
EndFunc
Oui je sais, tu vas faire la même en 2 lignes...
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
mikell
Spammer !
Messages : 6292 Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status :
Hors ligne
#6
Message
par mikell » mer. 16 juil. 2014 09:22
Mais jguinch c'est déjà fait
Faut juste utiliser les 2 lignes commentées au lieu des 2 lignes actuelles
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
jguinch
Modérateur
Messages : 2515 Enregistré le : lun. 14 févr. 2011 22:12
Status :
Hors ligne
#7
Message
par jguinch » mer. 16 juil. 2014 11:27
Quel c.. ! J'avais pas regardé les lignes commentées...
Bon,
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !