IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Lire cin "au vol"


Sujet :

C++

  1. #21
    Membre actif
    Homme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2006
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Transports

    Informations forums :
    Inscription : Octobre 2006
    Messages : 48
    Par défaut
    Bonjour,

    La solution sous windows :
    ReadFile(stdin) + overlapped result

    http://msdn.microsoft.com/en-us/libr...=vs.85%29.aspx

  2. #22
    Membre Expert
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    1 711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2012
    Messages : 1 711
    Par défaut
    Citation Envoyé par iNaKoll Voir le message
    Bonjour,

    La solution sous windows :
    ReadFile(stdin) + overlapped result

    http://msdn.microsoft.com/en-us/libr...=vs.85%29.aspx
    http://social.msdn.microsoft.com/For...ous-operations

    Well, ain't that a surprise. Overlapped I/O simply allows asynchronous I/O, it doesn't force it.

  3. #23
    Membre averti
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Septembre 2007
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 28
    Par défaut
    Citation Envoyé par iNaKoll Voir le message
    Bonjour,

    La solution sous windows :
    ReadFile(stdin) + overlapped result

    http://msdn.microsoft.com/en-us/libr...=vs.85%29.aspx
    Pas mieux, ou alors il faut me fournir un bout de code !

    Le système reste bloqué en attente d'au moins 1 caractère. En désactivant l'attente du CR (cf plus haut) le prog tourne entre chaque caractère saisi mais cç ne change pas le fait qu'il se bloque !

    Je n'ai pas encore trop bien compris le "overlapped result"...

    Et je désespère.

  4. #24
    Membre actif
    Homme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2006
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Transports

    Informations forums :
    Inscription : Octobre 2006
    Messages : 48
    Par défaut
    Example: msdn.microsoft.com/en-us/library/windows/desktop/aa365690(v=vs.85).aspx

    comme l'a noté Iradrille. L'opération asynchrone est permise mais non forcée. En d'autres mots on peut malgré tout se retrouver avec un comportement bloquant au bon vouloir de l'OS. Ce comportement est a priori surtout observé sous Vista et Seven. Je n'ai jamais rencontré ce problème sous XP (heureusement, s'aurait été la cata). A essayer donc...

    Sinon, d'autres pistes :
    - pdcurse
    - conio.h + kbhit
    - thread, même la version express de visual studio doit supporter au moins une implémentation de thread. ce qu'elle ne doit pas supporter c'est le debugage multithread.

  5. #25
    Membre Expert Avatar de Astraya
    Homme Profil pro
    Consommateur de café
    Inscrit en
    Mai 2007
    Messages
    1 050
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Consommateur de café
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 1 050
    Par défaut
    Depuis le temps que je te vois essayer différentes pistes les plus étranges et les moins fiables, un bon thread simple te fera l'affaire en 1h de travaille grand max. C'est pas "overkill" sachant que c'est le plus simple et le plus fiable sur le fonctionnement, car le thread au moins on sait ce qu'il fait et windows ne bloque rien si il le désire.

    Bref, je maintiens le thread.

  6. #26
    Expert confirmé
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 318
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 318
    Par défaut
    Le thread n'est pas toujours adapté.
    L'exemple type: on veut saisir des mots de passes et remplacer chaque lettre par une étoile. Avec des threads on n'arrivera à rien.
    Bon, ce n'est peut-être pas ce qui est attendu ici. Mieux je reste persuadé qu'il vaut apprendre à configurer sa console.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  7. #27
    Membre éclairé
    Inscrit en
    Avril 2005
    Messages
    1 110
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 1 110
    Par défaut
    +1 pour le thread. Je pense que c'est la solution la plus simple et élégante pour les besoins de jfadeuilhe (à lui de voir).

    Mais bon, comme on aime bien se chatouiller, on peut y aller avec des SetWindowsHookEx()
    Mais il est recommandé de d'abord se documenter sur le fonctionnement de Windows et son système de messagerie, un bon début ici par exemple http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx

Discussions similaires

  1. Quote et double quote
    Par aktos dans le forum Langage
    Réponses: 8
    Dernier message: 05/01/2007, 19h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo