Page 1 sur 1

[R] Execute("string") sur plusieurs ligne.

Posté : mer. 26 oct. 2011 21:33
par XenaMelody
Bonsoir !

En avançant sur mon projet, je me confronte à un problème avec Execute. Comment faire pour qu'Execute("string") puisse exécuter plusieurs ligne ? ( Je ne peux pas utiliser "string" & @CRLF & _ car le string est un script AutoIt se trouve dans un EditBox et j'utilise GUICtrlRead($Edit) dans Execute() ).

Re: [..] Execute("string") sur plusieurs ligne.

Posté : mer. 26 oct. 2011 21:48
par mikell
XenaMelody a écrit : le string est un script AutoIt se trouve dans un EditBox
Et pourquoi pas passer par un fichier temp ?
GUICtrlRead($Edit) => @tempdir & "\script.au3" => ShellExecute(@tempdir & "\script.au3")

Re: [..] Execute("string") sur plusieurs ligne.

Posté : mer. 26 oct. 2011 22:09
par XenaMelody
Parce que je n'ai pas envie de passer par un autre script :P .
Mais je pense que j'ai trouvé. Il me suffi de convertir le string en tableau ASCII, de trouver la décimale du retour à la ligne, soit 10, de le supprimer, de reconvertir ce tableau en string et de lancer cette derniere avec Execute() :wink: !

Si sa marche, je passe se post en résolut, mais d'abord je dois aller manger, bonne appétit :D !

Re: [..] Execute("string") sur plusieurs ligne.

Posté : mer. 26 oct. 2011 22:21
par matwachich
Pourquoi faire simple quand on peut faire compliqué!

Code : Tout sélectionner

$commande = StringSplit($commande, @CRLF, 1)
For $i = 1 To $commande[0]
    Execute($commande[$i])
Next

Re: [..] Execute("string") sur plusieurs ligne.

Posté : mer. 26 oct. 2011 22:27
par TommyDDR
@matawachich : Je doute que cela fonctionne avec un script "un peu" élaboré (avec des if, des for, etc)

Sinon (Mais vous passez par un 2eme processus) :

Code : Tout sélectionner

ExecuteMultiLine("Votre script multiligne ici")
Sleep(1000)

Func ExecuteMultiLine($Script)
    Local $TempFile = @TempDir & "\temp.au3"
    Local $File = FileOpen($TempFile, 2)
    FileWrite($File, $Script)
    FileClose($File)
    ToolTip(@AutoItExe)
    Run(@AutoItExe & " /AutoIt3ExecuteScript " & $TempFile)
EndFunc

Re: [..] Execute("string") sur plusieurs ligne.

Posté : mer. 26 oct. 2011 22:56
par XenaMelody
@matwachich
matwachich a écrit :Pourquoi faire simple quand on peut faire compliqué!
C'est pas plutôt : Pourquoi faire compliqué quand on peut faire simple ?

@TommyDDR

Tu as raison, mon astuce avec la méthode ASCII ne fonctionne qu'avec des lignes très simple du genre MsgBox. Le script suivant par contre ne marche pas :

Code : Tout sélectionner

$test  = 1
If $test = 1 Then
MsgBox(0, "test",  $test)
Else
MsgBox(0, "test", "Something wrong")
EndIf
Edit :

Et puis, je pense que créer un nouveau fichier est une bien meilleur solution après réflexion. Si ce script contient une boucle, cela va suspendre mon script principale, et de toute façon je n'ai pas le choix vu que ça ne marche pas :) .

Re: [..] Execute("string") sur plusieurs ligne.

Posté : mer. 26 oct. 2011 23:04
par TommyDDR
Avez vous essayé ma fonction ?

Si oui : Vous convient elle ?

Si oui : -> Résolu ^^'

Re: [..] Execute("string") sur plusieurs ligne.

Posté : mer. 26 oct. 2011 23:06
par XenaMelody
Merci pour vos réponse, je mets en résolut !