[R] ConsoleWrite

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

[R] ConsoleWrite

#1

Message par mikell »

Une bête question sur ConsoleWrite ...
Fichier d'aide a écrit :The purpose for this function is to write to the STDOUT stream. Many popular text editors can read this stream
OK mais en pratique, comment ensuite lire ça avec Notepad (par exemple) ?
Un exemple simple please ?
Modifié en dernier par mikell le mar. 28 juin 2011 09:18, modifié 1 fois.
" 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
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2284
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [..] ConsoleWrite

#2

Message par jchd »

Peu de programmes Windows emploient stdout, mais c'est tout à fait possible d'intercepter la sortie et d'en faire un fichier, une cocotte en papier, etc.
Pour autant que je sache, Notepad ignore l'entrée standard, donc pas de pipe possible.
Que veux-tu faire précisément ?
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] ConsoleWrite

#3

Message par mikell »

Ben en fait, je vois des ConsoleWrite partout, le dernier en date ici http://www.autoitscript.fr/forum/viewto ... 537#p50537
Et comme je ne sais pas en pratique à quoi ça peut servir ça m'agace et j'aimerais comprendre...
" 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
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2284
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [..] ConsoleWrite

#4

Message par jchd »

Scite affiche ces consolewrite dans le panneau du bas, ce qui est des plus pratique. D'autre éditeurs en sont capables.
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] ConsoleWrite

#5

Message par mikell »

Dans cette réponse que tu viens de donner :
jchd a écrit :

Code : Tout sélectionner

#include <Date.au3>

Local $date = '2011/04/23'
For $i = -11 To 0
    ConsoleWrite(StringRegExpReplace(_DateAdd("M", $i, $date), "(\d\d\d\d)/(\d\d)/\d\d", "$1$2") & @LF)
Next
A quoi sert le ConsoleWrite ? Comment exploiter le résultat dans un script, le faire afficher quelque part par exemple ?
" 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
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2284
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [..] ConsoleWrite

#6

Message par jchd »

Tu colles dans Scite sous un nom bidon.au3 et F5.
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] ConsoleWrite

#7

Message par mikell »

Je ne vois toujours pas l'intérêt pratique de la chose....
Pourquoi ne pas sortir le résultat dans une variable facile à utiliser dans un script, plutôt qu'un ConsoleWrite d'utilisation pas évidente ?
ça s'affiche dans Scite, super mais pour l'afficher dans une GUI avec une Label par exemple ? comment on fait ?
" 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
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2284
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [..] ConsoleWrite

#8

Message par jchd »

Pour faire une moulinette rapide qui n'a pas vocation à perdurer, mettre au point un script vaseux sur lequel coince quelqu'un, etc.
L'avantage est qu'on est maître de la police employé pour Scite, donc on peut afficher du tibétain en cinq secondes, alors qu'avec une msgbox, niet sauf à sortir l'artillerie.
On peut faire récupérer cette sortie par un programme annexe.
On peut copier la sortie et se la scotcher ailleurs.
On n'est essentiellement pas limité en volume ni en longueur de ligne(s). J'ai quelques scripts qui me sortent 320Mo ou plus. Je vois mal zipper ça dans une msgbox et me le traiter ailleurs.
Je déteste la fonte des msgbox. Je travaille surtout en fonte fixe (DejaVu sans Mono, beaucoup).
...

Ah, j'allais oublier : c'est vital pour beaucoup de programmes CUI !!!
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
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: [..] ConsoleWrite

#9

Message par matwachich »

Sa se voit que le gars qui pose cette question n'a pas l'habitude d'écrire des gros script!!! (sans vouloir vous offensé!)
Le PLUS grande utilité de ConsoleWrite dans Scite est le déboguage.

Quand un script coince, c'est bon de savoir ou et pourqoi sa coince!
Sortons VW du coté obscure! - La curiosité est un vilain défaut! Cliquez ici
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] ConsoleWrite

#10

Message par mikell »

matwachich a écrit :Sa se voit que le gars qui pose cette question n'a pas l'habitude d'écrire des gros script!!! (sans vouloir vous offensé!)
C'est vrai, je n'ai pas l'habitude d'écrire de gros scripts
C'est juste que je ne suis pas programmeur, comme sans doute pas mal de gens qui viennent sur ce forum pour demander de l'aide alors qu'ils débutent avec AutoIt, et à qui on donne du ConsoleWrite comme réponse, et qui comme moi doivent se demander ce qu'ils vont bien pouvoir en faire...
Certaines choses qui paraissent évidentes à ceux qui ont beaucoup d'heures de vol en programmation ne sont pas forcément évidentes pour nous autres les ignorants
Dans le premier post je demandais juste un exemple simple d'application pratique de ConsoleWrite dans un script basique, mais bon...
Donc je vais (tout en vous remerciant pour vos réponses) continuer à ne pas utiliser cet indispensable machin dans mes petits scripts pauvres, non scientifiques et pas écrits en tibétain
" 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
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2284
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [..] ConsoleWrite

#11

Message par jchd »

Exemples simples dans des scripts basiques ? Ben je crois en donner souvent ici ou là.
Une trace console ne perturbe pas non plus un GUI en changeant le focus, le contrôle et la fenêtre actifs, ne provoque pas un redraw à la fermeture, enfin tout ça.
Pour tracer des messages Windows, il n'y a guère mieux et plus simple, sauf de l'artillerie incompatible, type VS.
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
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: [..] ConsoleWrite

#12

Message par matwachich »

J'ai bien préciser sans "vouloir vous offenser"
Moi aussi au début je n'ai jamais utiliser ConsoleWrite.

Exemple:
► Afficher le texte
Tu lance ce script, puis tu ouvre ton navigateur et tu vas à l'adresse 127.0.0.1
Tu veras les messages qu'envoi ton navigateur à ce script s'écrire en bas, dans Scite
Sortons VW du coté obscure! - La curiosité est un vilain défaut! Cliquez ici
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] ConsoleWrite

#13

Message par mikell »

Merci matwachich pour ce script, je ne suis pas offensé, juste agacé
Je me suis mal fait comprendre sans doute alors je recommence

Est-ce qu'un résultat donné sous forme de ConsoleWrite() dans un script peut être affiché dans une GUI créée par ce même script, et si oui comment ? sachant que
1) A chaque fois on me dit "ça s'affiche dans Scite...", or je me FOUS de l'affichage dans Scite
2) Les termes tous plus techniques les uns que les autres qu'on me donne en réponse jusqu'à présent ne m'aident pas, bien au contraire
Quand même, c'est simple comme question, non ?
" 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
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2284
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [..] ConsoleWrite

#14

Message par jchd »

Pas la peine de s'agacer.
ConsoleWrite écrit dans le flux standard de sortie, stdout, point barre. Si tu veux mettre ces données dans un morceau de GUI, c'est bien sûr à toi de le faire.

Tout programme Dos, Windows, Unix, Mac (c'est pareil) ouvre, par défaut, trois "flux" (stdin, stdout, stderr) qui sont des "handle" de fichiers qu'on peut rediriger vers n'importe quel autre consommateur de flux. C'est un peu comme si le code du démarrage du programme ouvrait pour toi trois fichiers (au sens large) qui peuvent venir d'une source quelconque (stdin pour input) ou aller vers un consommateur quelconque.

Tout ça n'a aucun lien avec un GUI, bien au contraire. Ce que tu produis avec des ConsoleWrite parvient dans le flux stdout. Le parent (shell ou autre programme) peut l'avoir dirigé vers n'importe quoi.
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
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: [..] ConsoleWrite

#15

Message par matwachich »

Je crois que je dois simplifier ce que dit jchd!!!
Vois ces flux comme des portes, et le programme comme la maison:
- 2 portes servent à sortir de la maison
- 1 à rentrer
Mais sortir/rentrer quoi?
et bien du texte (pour faire simple)

Prenons un programme tout ce qu'il y à de plus basique (c'est à dire, en mode console, ou ms dos si tu préfère, tu sais, le truc noir tout moche... mdr :p) cmd.exe (fait démarrer -> exécuter -> tape cmd -> Entrer)
- Une fenêtre noire, et elle t'afficher des trucs, c'est une des portes de sortie! (le stdout)
- Tu peux entrer des trucs (instructions...), c'est la porte d'entrée (stdin)
- l'autre porte de sortie, je crois que cmd n'en a pas.

Après, ici les portes sont redirigées vers l'écran (affichage), rien n'empèche de les envoyer vers un fichier! et là tu auras 2 fichiers (stdout, déjà vu, et stderr, l'autre porte de sortie!)

C'est au fait des moyens basiques de communication entre le programme et le monde extérieur.

Maintenant, dans autoit, pourquoi ConsoleWrite est si utile???
Car Scite (et beaucoup d'autre éditeurs) "capture" le flux stdout de ton script et l'affiche en bas.
Donc, par exemple, si par souci de débogage (ou juste par curiosité) je veut savoir à un moment précis le contenu d'une variable dans mon script, bah je n'ai qu'à mettre à ce moment:

Code : Tout sélectionner

ConsoleWrite($maVariable & @CRLF)
et hop! le contenu s'affiche en bas dans Scite!

Elle est pas belle la vie avec AutoIt!

Quand à ta GUI, bah ya rien à ajouter à ce que disait jchd: ça n'a rien à voir!
Tu peut "simuler" une console dans ta GUI (ce que je fais souvent), pour par exemple tracer tes variables même si le script est compilé, ou juste afficher des trucs!
► Afficher le texte
PS: si on suit le truc des portes, disons qu'une GUI est une immense baie vitrée interactive!
Sortons VW du coté obscure! - La curiosité est un vilain défaut! Cliquez ici
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] ConsoleWrite

#16

Message par mikell »

Oufff ça y est j'ai enfin ma réponse, Image qui tient en peu de mots :
matwachich a écrit :Quand à ta GUI, bah ya rien à ajouter à ce que disait jchd: ça n'a rien à voir!
Parce que tout de même j'avais lu le fichier d'aide bien comme il faut et compris que ConsoleWrite servait à communiquer avec l'extérieur du script
Ce que je ne comprenais pas, c'était ça : quand une réponse est fournie sur le forum, comme par exemple :
jchd a écrit :

Code : Tout sélectionner

Local $date = StringFormat("%04i%02i", @YEAR, @MON)
ConsoleWrite($date & @LF)
ConsoleWrite(StringFormat("%04i%02i", 17, 3) & @LF)
ce qui intéresse celui qui a posé la question, a priori c'est de pouvoir utiliser la réponse dans le script qu'il est en train de construire
Donc il a besoin d'un résultat sous forme de variable exploitable dans le script, pas d'un ConsoleWrite qu'il pourra exploiter partout SAUF dans son script Image

Donc merci à jchd pour avoir fait l'effort d'utiliser des mots compréhensibles, et à matwachich pour son analogie qui me confirme que je n'avais pas compris le fichier d'aide de travers
" 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
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2284
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [R] ConsoleWrite

#17

Message par jchd »

Tu nous fais un blocage nerveux là.
Si ce qu'un exemple sortant en ConSoleWrite t'intéresse, le plus simple est de stocker l'expression dans une variable, dont tu feras ce que tu veux. La situation est rigoureusement identique avec une MsgBox.
Par ailleurs, une simple recherche Google sur stdout par exemple t'aurait appris plus directement de quoi il s'agissait.
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Avatar du membre
Manwe
Niveau 4
Niveau 4
Messages : 57
Enregistré le : mer. 08 oct. 2008 09:21
Status : Hors ligne

Re: [R] ConsoleWrite

#18

Message par Manwe »

Code : Tout sélectionner

#Include <File.au3>


Func print($text, $log = '', $noCRLF ='')
    
    if $noCRLF = '' then $text &= @CRLF
    ConsoleWrite('# '& $text)
    
    If $log <> '' Then
        If Not FileExists(@ScriptDir & "/logs") Then DirCreate(@ScriptDir & "/logs")

        _FileWriteLog(@ScriptDir & "/logs/log_" & @ScriptName & ".htm", "<font face=Verdana size=2>" & $text & "</font><br>", 1)
                
        Global $editControl
        $windowName = "Script is running. Please wait ... "
        if not WinExists ( $windowName ) Then 
            GUICreate($windowName, 250, 300, 10, 10)  
            $editControl = GuiCtrlCreateEdit(@CRLF & " ", 0, 0, 250, 300 )
            GuiSetState()
        endif 
        GUICtrlSetData($editControl, $text, 1)
        
    EndIf
EndFunc 

print ("Je fais juste un consoleWrite")
print ("Je logue et j'affiche", "log")
MsgBox(0,'','Fin du script')
 
Un clavier azerty en vaut deux.
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: [R] ConsoleWrite

#19

Message par matwachich »

Quand on utilise consoleWrite, c'est pour afficher le contenu d'une variable sans se casser la tête avec une GUI.
Après le mec, il se débrouille! Mais c'est juste pour montrer que la variable contient bien ce qu'on cherche.
Sortons VW du coté obscure! - La curiosité est un vilain défaut! Cliquez ici
Répondre