[R] ConsoleRead; @error = 1

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Avatar du membre
Yoyo86220
Niveau 6
Niveau 6
Messages : 238
Enregistré le : mer. 12 mars 2008 21:47
Status : Hors ligne

[R] ConsoleRead; @error = 1

#1

Message par Yoyo86220 »

Bonjour a tous,

J'ai un problème avec la commande ConsoleRead...

Code : Tout sélectionner

#AutoIt3Wrapper_Change2CUI=Y

ConsoleWrite("Please enter data:")
Sleep(6000)
$console = ConsoleRead()
$buttoncode = MsgBox(2, "From console I read", $console)
If $buttoncode = 3 Then
    $button = "abort"
ElseIf $buttoncode = 4 Then
    $button = "retry"
ElseIf $buttoncode = 5 Then
    $button = "ignore"
EndIf
ConsoleWrite(@CRLF & "The " & $button & " button was pressed in the Msgbox." & @CRLF)
voici mon scripte... une fois compilé je ne peux rien taper dans la console... quand j'écris sur mon clavier sa n'écrit pas dans la console :s voilà où est le probleme merci de votre aide!
Modifié en dernier par Yoyo86220 le mar. 15 mars 2011 16:08, modifié 1 fois.
Avatar du membre
sylvanie
Niveau 11
Niveau 11
Messages : 1556
Enregistré le : jeu. 26 juil. 2007 21:31
Localisation : Paris
Status : Hors ligne

Re: [..] ConsoleRead; @error = 1

#2

Message par sylvanie »

il y a deux causes :

la première et sirecte, est que consoleread n'attend pas qu'on tappe, elle renvoie de suite.
Il faut donc l'inclure dans un while et sortir en cas d'erreur ou de retours chariot (sinon on ne sort pas ...).
cf cette modification qui marchera sous Scite ou un autre editeur gérant une console:
► Afficher le texte
2eme point : cmd.exe n'a pas un mode console aussi coopératif que Scite. Pour le stdout, c'est OK, mais pour le stdin il faut passer par l'astuce donnée par le fichier d'aide :
echo Hello! | ConsoleRead.exe
En supposant que l'exe compiler s'appelle "ConsoleRead.exe" biensûr, et là je pense que c'est le cas du cmd que tu souhaites ...
Toi qui cherche à mettre le doigt sur la solution, appuie sur F1.
Avatar du membre
Yoyo86220
Niveau 6
Niveau 6
Messages : 238
Enregistré le : mer. 12 mars 2008 21:47
Status : Hors ligne

Re: [..] ConsoleRead; @error = 1

#3

Message par Yoyo86220 »

mon probleme est le suivant c'est que @error est tjrs égale à 1 dans le script que vous venez de faire donc il sort toujours de la boucle et je ne peux tjrs rien écrire dans la console :( je comprends pas :x

dès que j'exécute le script la console s'ouvre mais le MSG box "From console I read" aussi :s et j'ai vérifier il détecte une erreur c'est pourquoi il quitte la boucle... :'( d'où vient mon problème?
Avatar du membre
sylvanie
Niveau 11
Niveau 11
Messages : 1556
Enregistré le : jeu. 26 juil. 2007 21:31
Localisation : Paris
Status : Hors ligne

Re: [..] ConsoleRead; @error = 1

#4

Message par sylvanie »

L'éxécution est faite depuis quelle application ?
- Scite
- Pspad
- cmd.exe
- autre ?

Car généralement c'est un soucis de ratachement à la console de l'application hôte.
D'où la question
Toi qui cherche à mettre le doigt sur la solution, appuie sur F1.
Avatar du membre
Yoyo86220
Niveau 6
Niveau 6
Messages : 238
Enregistré le : mer. 12 mars 2008 21:47
Status : Hors ligne

Re: [..] ConsoleRead; @error = 1

#5

Message par Yoyo86220 »

(dsl pour ce vieux up) mais je n'ai jamais réussi à utilisé ConsoleRead() je sais pas comment voir quel système est utilisé (cmd; scite...)
merci de m'aider...
Avatar du membre
sksbir
Niveau 7
Niveau 7
Messages : 384
Enregistré le : lun. 26 oct. 2009 17:57
Localisation : Lyon
Status : Hors ligne

Re: [..] ConsoleRead; @error = 1

#6

Message par sksbir »

petite question bête : tu l'as compilé en mode console ?
Avatar du membre
Yoyo86220
Niveau 6
Niveau 6
Messages : 238
Enregistré le : mer. 12 mars 2008 21:47
Status : Hors ligne

Re: [..] ConsoleRead; @error = 1

#7

Message par Yoyo86220 »

Bon
Puisque personne à l'aire d'avoir eu mon problème c'est que je dois faire une mauvaise manipulation...

voici les étapes:

Mon Script:
► Afficher le texte
Compilation du script en mode console...
► Afficher le texte
Exécution du script
► Afficher le texte
Je ne tape rien au clavier le script se lance et m'affiche directement ce message....
► Afficher le texte
OU EST MON ERREUR?
Modifié en dernier par Yoyo86220 le mer. 09 mars 2011 17:35, modifié 6 fois.
Avatar du membre
zeshrek
Niveau 10
Niveau 10
Messages : 984
Enregistré le : mer. 17 nov. 2010 09:31
Localisation : Sur ma chaise
Status : Hors ligne

Re: [..] ConsoleRead; @error = 1

#8

Message par zeshrek »

On de fournit pas le code sous forme d'image. Outre le fait que cela lui fait prendre 10 fois plus de place que le texte, ca oblige ceux qui voudraient t'aider a se farcir la saisie du code.

Merci de rectifier au plus vite


Sinon, tu as pensé a mettre un msgbox ligne 6 plutot qu'un exitloop histoire de voir si y a pas une coquille d'entrée de jeu (j'ai pas testé, cf §1, c'est juste une idée qui me vient)
Si vis pacem para bellum
GaRydelaMer
Niveau 7
Niveau 7
Messages : 450
Enregistré le : mer. 18 mars 2009 22:12
Localisation : Montpellier
Status : Hors ligne

Re: [..] ConsoleRead; @error = 1

#9

Message par GaRydelaMer »

Même réponse, je vais pas me taper l'écriture de ton script.

Mais ligne 7 au lieu de ExitLoop, je mettrais ContinueLoop.
Avatar du membre
zeshrek
Niveau 10
Niveau 10
Messages : 984
Enregistré le : mer. 17 nov. 2010 09:31
Localisation : Sur ma chaise
Status : Hors ligne

Re: [..] ConsoleRead; @error = 1

#10

Message par zeshrek »

bin a ce moment là si tu continue la boucle... autant pas faire le if et carrément supprimer cette ligne ou alors il faut faire un else?
Si vis pacem para bellum
GaRydelaMer
Niveau 7
Niveau 7
Messages : 450
Enregistré le : mer. 18 mars 2009 22:12
Localisation : Montpellier
Status : Hors ligne

Re: [..] ConsoleRead; @error = 1

#11

Message par GaRydelaMer »

Bin non c'est pour sauter les lignes vides et pas les ajouter dans la variable $Console &= $ConsoleTmp.
Avatar du membre
Yoyo86220
Niveau 6
Niveau 6
Messages : 238
Enregistré le : mer. 12 mars 2008 21:47
Status : Hors ligne

Re: [..] ConsoleRead; @error = 1

#12

Message par Yoyo86220 »

Non mais comme je l'ai dis plus haut @error = 1 dès l'entrée dans le script... j'ai testé avec msgbox au lieu de exitloop à chaque tour de la boucle il me détecte une erreur le premier tour @error = 1 et tout les autres tours @error = 2...

PS: Le code était un peu plus haut...
Avatar du membre
Yoyo86220
Niveau 6
Niveau 6
Messages : 238
Enregistré le : mer. 12 mars 2008 21:47
Status : Hors ligne

Re: [..] ConsoleRead; @error = 1

#13

Message par Yoyo86220 »

aucune solution?
Avatar du membre
Yoyo86220
Niveau 6
Niveau 6
Messages : 238
Enregistré le : mer. 12 mars 2008 21:47
Status : Hors ligne

Re: [..] ConsoleRead; @error = 1

#14

Message par Yoyo86220 »

Personne à eu ce problème avec cette fonction?
Avatar du membre
Yoyo86220
Niveau 6
Niveau 6
Messages : 238
Enregistré le : mer. 12 mars 2008 21:47
Status : Hors ligne

Re: [..] ConsoleRead; @error = 1

#15

Message par Yoyo86220 »

UP
Avatar du membre
sksbir
Niveau 7
Niveau 7
Messages : 384
Enregistré le : lun. 26 oct. 2009 17:57
Localisation : Lyon
Status : Hors ligne

Re: [..] ConsoleRead; @error = 1

#16

Message par sksbir »

Bonjour

Essaye ton programme compilé en redirigeant l'entrée standard, tu verras que ça marche...
D:\tmp\test_consoleread.exe < d:\tmp\test_input.txt

Par ailleurs, quand on lance ton programme après modif ( ignorer les erreurs ) et sans rediriger l'entrée standard, on s'aperçoit que tout ce qu'on essaye de taper "ressort" quand on fait Ctrl+C.

En fait, c'est comme si l'entrée standard de ton programme n'était pas l'entrée standard de la console, sauf quand on la redirige.

Mon pronostic personnel est plutôt mauvais : consoleread ne semble pas fait pour fonctionner de façon interactive... ( mais ça n'engage que moi ).
Avatar du membre
Yoyo86220
Niveau 6
Niveau 6
Messages : 238
Enregistré le : mer. 12 mars 2008 21:47
Status : Hors ligne

Re: [..] ConsoleRead; @error = 1

#17

Message par Yoyo86220 »

J'ai pas tout suivi comment rediriger l'entrée ?

pourquoi dans l'aide il propose se script? je trouve quand mm ça inutile de "montrer en exemple de quelque chose qui ne fonctionne pas..."

:?
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11823
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] ConsoleRead; @error = 1

#18

Message par Tlem »

En fait, ce qu'il faut comprendre, c'est ceci :
ConsoleRead

Remarks
ConsoleRead reads from the console standard input stream of the AutoIt script process, which is normally used by console applications to read input from a parent process.
Pour faire ce que vous cherchez à faire, c'est un petit peut plus compliqué que de lire avec ConsoleRead.

Voici un exemple concret :

Code : Tout sélectionner

#AutoIt3Wrapper_Change2CUI=y
#include <WinAPI.au3>

$sResponse = _ConsoleInput("Veuillez entrer du text : ")
ConsoleWrite("Vous avez entré : " & $sResponse & @CRLF)

Func _ConsoleInput($sPrompt)
    If Not @Compiled Then Return SetError(1, 0, 0) ; Not compiled

    ConsoleWrite($sPrompt)

    Local $tBuffer = DllStructCreate("char"), $nRead, $sRet = ""
    Local $hFile = _WinAPI_CreateFile("CON", 2, 2)

    While 1
        _WinAPI_ReadFile($hFile, DllStructGetPtr($tBuffer), 1, $nRead)
        If DllStructGetData($tBuffer, 1) = @CR Then ExitLoop
        If $nRead > 0 Then $sRet &= DllStructGetData($tBuffer, 1)
    WEnd

    _WinAPI_CloseHandle($hFile)
    Return $sRet
EndFunc
Source : http://www.autoitscript.com/forum/topic ... _p__761205
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
Yoyo86220
Niveau 6
Niveau 6
Messages : 238
Enregistré le : mer. 12 mars 2008 21:47
Status : Hors ligne

Re: [..] ConsoleRead; @error = 1

#19

Message par Yoyo86220 »

Encore une fois une grand merci Tlem!
Répondre