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

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Avatar du membre
XenaMelody
Niveau 4
Niveau 4
Messages : 67
Enregistré le : mar. 25 oct. 2011 00:45
Status : Hors ligne

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

#1

Message 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() ).
Modifié en dernier par XenaMelody le mer. 26 oct. 2011 23:06, modifié 1 fois.
XenaMelody
L'esprit sert à tout, mais il ne mène à rien.
Talleyrand
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

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

#2

Message 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")
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
XenaMelody
Niveau 4
Niveau 4
Messages : 67
Enregistré le : mar. 25 oct. 2011 00:45
Status : Hors ligne

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

#3

Message 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 !
XenaMelody
L'esprit sert à tout, mais il ne mène à rien.
Talleyrand
Avatar du membre
matwachich
Membre émérite
Membre émérite
Messages : 986
Enregistré le : lun. 19 oct. 2009 04:04
Localisation : Algérie
Status : Hors ligne

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

#4

Message 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
Sortons VW du coté obscure! - La curiosité est un vilain défaut! Cliquez ici
Avatar du membre
TommyDDR
Modérateur
Modérateur
Messages : 2130
Enregistré le : mar. 22 juil. 2008 21:55
Localisation : Nantes
Status : Hors ligne

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

#5

Message 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
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
Avatar du membre
XenaMelody
Niveau 4
Niveau 4
Messages : 67
Enregistré le : mar. 25 oct. 2011 00:45
Status : Hors ligne

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

#6

Message 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 :) .
Modifié en dernier par XenaMelody le mer. 26 oct. 2011 23:05, modifié 1 fois.
XenaMelody
L'esprit sert à tout, mais il ne mène à rien.
Talleyrand
Avatar du membre
TommyDDR
Modérateur
Modérateur
Messages : 2130
Enregistré le : mar. 22 juil. 2008 21:55
Localisation : Nantes
Status : Hors ligne

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

#7

Message par TommyDDR »

Avez vous essayé ma fonction ?

Si oui : Vous convient elle ?

Si oui : -> Résolu ^^'
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
Avatar du membre
XenaMelody
Niveau 4
Niveau 4
Messages : 67
Enregistré le : mar. 25 oct. 2011 00:45
Status : Hors ligne

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

#8

Message par XenaMelody »

Merci pour vos réponse, je mets en résolut !
XenaMelody
L'esprit sert à tout, mais il ne mène à rien.
Talleyrand
Répondre