Page 1 sur 1

[R] Subinacl et StdOutRead

Posté : jeu. 23 sept. 2010 20:05
par matwachich
Salut la companie!

SVP, es-que quelqu'un pourrait me dire ce que je fait mal ici:

Code : Tout sélectionner

#include <Constants.au3>

FileInstall("C:\Program Files\_Mes Programmes\Logiciels\AutoIt3\Include\Perso\subinacl\subinacl.exe", @TempDir & "\subinacl.exe", 1)

Func _subInAcl($cmd)
    Local $pid = Run(@TempDir & "\subinacl.exe " & $cmd, @TempDir, @SW_HIDE, $STDERR_CHILD + $STDIN_CHILD + $STDOUT_CHILD)
    Local $ret = "", $line
    While 1
        $line = StdoutRead($pid)
        If $line <> "" Then $ret &= $line & @CRLF
        If @error Then ExitLoop
    WEnd
    Return $ret
EndFunc

$r = _subinacl("/?")

ConsoleWrite($r & @CRLF)
Rien ne s'affiche alors que le paramètre /? passé a subinacl.exe devrai afficher un vrai bouquin!?

Re: [..] Subinacl et StdOutRead

Posté : jeu. 23 sept. 2010 21:39
par sylvanie
A tout hasard, est ce que le Fileinstall s'est bien effectué ?

Re: [..] Subinacl et StdOutRead

Posté : ven. 24 sept. 2010 09:35
par sksbir
bonjour

si tu lances subinacl dans une fenêtre de commande, tu verras que le texte d'aide est formaté, avec certains caractères qui apparaissent en gras.

Il fallait donc analyser le contenu de la réponse de subinacl.
$TEST=StringToASCIIArray($r)
_ArrayDisplay($TEST)

ce qui permet de constater la présence d'un chr(0) entre chaque caractère émis.

il faut rajouter l'instruction

$r=StringReplace($r,chr(0),"")

avant d'afficher dans la console.

Ceci dit, avant de te lancer dans une usine à gaz avec subinacl, je te conseille de tester plutôt setacl.

Re: [..] Subinacl et StdOutRead

Posté : sam. 02 oct. 2010 13:13
par matwachich
Merci! c'était la bonne solution!

Code : Tout sélectionner

#include <Constants.au3>

FileInstall("C:\Program Files\_Mes Programmes\Logiciels\AutoIt3\Include\Perso\subinacl\subinacl.exe", @TempDir & "\subinacl.exe", 1)

Func _subInAcl($cmd)
    Local $pid = Run(@TempDir & "\subinacl.exe " & $cmd, @TempDir, @SW_HIDE, $STDERR_CHILD + $STDIN_CHILD + $STDOUT_CHILD)
    Local $ret = "", $line
    While 1
        $line = StdoutRead($pid)
        If $line <> "" Then $ret &= $line & @CRLF
        If @error Then ExitLoop
    WEnd
    Return StringReplace($ret, chr(0), "")
EndFunc

$r = _subinacl("/?")

ConsoleWrite($r & @CRLF)

Re: [..] Subinacl et StdOutRead

Posté : sam. 02 oct. 2010 13:22
par sylvanie
bravo, pensez alors à passer le sujet en [R]