wxDev.fr, le portail francophone consacré à wxWidgets ! ( The french portal for wxWidgets )  
Esp. membre
Recheche rapide



Recherche avancée
Statistiques
Membres inscrits :2359

Membres en ligne : 0
Invités en ligne : 1
Pub hébergeur
Pourquoi cette pub ?

Valid XHTML 1.0 Transitional

Valid CSS2

Menu forum (navigation):
Pages: 1  
 
Accueil » Accueil forums » Utilisation générale wxWidgets
» Capturer le text dans le console (wxExecute)
Conversation (Résolue) : Capturer le text dans le console (wxExecute)
20-04-2017 21:59:51  Capturer le text dans le console (wxExecute) #1
ajm (Membre)
Inscrit le : 16-03-2011
Messages: 82
Snippets: 0
Tutoriels: 0
Hors ligne
Bonjour,

Je viens de créer une application qui exécute une ligne de commande avec wxExecute, la ligne de commande marche bien mais je veux capturer le text dans le console et envoyer dans wxString.
J'ai essayé le code suivant pour faire le test:

Code wxWidgets:

 
wxExecute(_("help"));
 


Est-ce-que quelqu’un peut m'aider comment capture le text.

Merci
21-04-2017 06:43:55  Re: Capturer le text dans le console (wxExecute) #2
Xaviou (Administrateur)
Lieu: Annecy (74)
Inscrit le : 27-08-2007
Messages: 1368
Snippets: 25
Tutoriels: 6
Site web
Hors ligne
Salut.

Tu as plusieurs possibilités :

Si la commande que tu exécutes n'est pas censée te donner beaucoup de lignes de texte en résultat, tu peux utiliser wxExecute directement en passant en paramètre un wxArrayString : tu obtiendras en retour les lignes de texte dans ce wxArrayString.
Tu peux même utiliser la version de wxExecute prenant en paramètre jun deuxième wxArrayString pour pouvoir capturer les éventuelles lignes d'erreurs.

Par contre, si la sortie de la commande à exécuter risque d'être très longue, il faut que tu utilises un objet wxProcess dont tu passeras le pointeur à wxExecute.

Tu vas ensuite pouvoir récupérer le flux de sortie ainsi que le flux des erreurs (fonctions GetOutputStream et GetErrorStream) et lire ce qui arrive sur ces flux.

Pour ma part, que j'utilise cette deuxième méthode, je crée une classe dérivée de wxProcess, et quand la commande wxExecutre est lancée, cette classe démarre un wxTimer pour vérifier régulièrement s'il y a quelque chose à lire (car si les flux sont "pleins", ça bloque l'exécution).

@+
Xav'

Le nouveau portail wxWidgets francophone : www.wxdev.fr
Ben en fait, vous y êtes déjà...
21-04-2017 07:29:57  Re: Capturer le text dans le console (wxExecute) #3
ajm (Membre)
Inscrit le : 16-03-2011
Messages: 82
Snippets: 0
Tutoriels: 0
Hors ligne
Merci XAV, j'ai essayer le wxExecute et ça marche. Le résultat a 5000 lignes et ça a marché encore. Voici le code que j'ai utilisé:

Code wxWidgets:

 
    wxString cmd=_("help");   
    wxArrayString output;
    wxArrayString error;
    wxString text=_("");
 
 
    wxExecute(cmd,output,error);
 
    for(int i=0; i<output.Count();i++)
    {
        text+=output[i]+_("\n");
    }
 

maintenant le output du consol est dans "wxString text".
Menu forum (navigation):
Pages: 1  
 
Accueil » Accueil forums » Utilisation générale wxWidgets
» Capturer le text dans le console (wxExecute)