Page 1 sur 1
[R] Executer un string
Posté : mar. 15 juil. 2014 11:56
par Bonjour
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
Re: [...] Executer un string
Posté : mar. 15 juil. 2014 13:38
par jguinch
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
Re: [...] Executer un string
Posté : mar. 15 juil. 2014 13:51
par Bonjour
Sa fonctionne super bien merci

Re: [R] Executer un string
Posté : mar. 15 juil. 2014 22:55
par mikell
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
Re: [R] Executer un string
Posté : mar. 15 juil. 2014 23:11
par jguinch
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...

Re: [R] Executer un string
Posté : mer. 16 juil. 2014 09:22
par mikell
Mais jguinch c'est déjà fait
Faut juste utiliser les 2 lignes commentées au lieu des 2 lignes actuelles
Re: [R] Executer un string
Posté : mer. 16 juil. 2014 11:27
par jguinch
Quel c.. ! J'avais pas regardé les lignes commentées...
Bon,
