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

Langage Delphi Discussion :

Read(char) sans attendre Entrée


Sujet :

Langage Delphi

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 93
    Points : 44
    Points
    44
    Par défaut Read(char) sans attendre Entrée
    Salut a tous,

    Je développe actuellempent un petit programme en mode console sous Delphi 2007 et j'ai un leger probleme.

    Je voudrais utiliser read(MyChar) (où Mychar est de type char) de façon a ne pas avoir a appuyer sur enter pour valider chaque saisie.

    J'ai lu partout que normalement, ça devrait fonctionner mais le probleme est que ça ne fonctionne pas chez moi :
    Je peux taper autant de caracteres que je veux et en plus, il faut faire enter pour valider la saisie.

    Connaissez-vous une solution ?

    Merci d'avance.

  2. #2
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 459
    Points : 24 873
    Points
    24 873
    Par défaut
    As-tu essayé ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    AssignFile(F, '');
    BlockRead(F, MyChar, 1);
    Récemment quelqu'un a eu le même problème, je ne retrouve pas ma réponse à ce sujet ...
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 93
    Points : 44
    Points
    44
    Par défaut
    Merci de ta réponse mais ça ne fonctionne pas plus.

    Je précise que je veux lire une saisie sur la console et non dans un fichier texte mais j'ai quand meme essayé de faire marcher ton exemple en déclarant F comme TextFile mais ça ne marche pas.

  4. #4
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 459
    Points : 24 873
    Points
    24 873
    Par défaut
    BlockRead supporte TextFile ? cela me supprend (normalement c'est incompatible) et en mettant, juste File pour lire un simple binaire au lieu d'un préformatage texte avec TextFile;
    Normalement, si AssignFile se voit spécifier un fichier sans nom, il prend l'input standard donc le clavier, ... c'est dingue que le pascal n'est pas un GetCh comme le C ...
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  5. #5
    Membre confirmé
    Avatar de gb_68
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2006
    Messages
    232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 232
    Points : 546
    Points
    546
    Par défaut
    Bonjour,

    en Pascal il existait ReadKey (qui renvoyait un caractère sans l'écrire dans la console). Mais sous Delphi, il n'y avait plus l'unité crt contenant cette fonction ... jusqu'à cet excellent post : Crt sous Delphi.
    Testé, ReadKey fonctionne très bien ( j'ai juste du forcer un {$Define NEW_STYLES} dans l'unité crt ).

    Sinon, on peut toujours utiliser les fonctions windows :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
      function GetCh : integer ; external 'msvcrt.dll' name '_getch';// n'écrit pas le caractère dans la console 
      function GetChEcho : integer ; external 'msvcrt.dll' name '_getche'; // écrit le caractère dans la console

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 93
    Points : 44
    Points
    44
    Par défaut
    Merci de vos réponses mais en fait je viens de trouver la solution.

    Bien qu'elle soit un peu compliquée, elle marche :
    J'ai programmé une petite fonction qui lit directement les evenements sur la console a l'aide de l'API windows ReadConsoleInput.

    C'est certes beaucoup plus compliqué mais ça me permet de gérer les touches spéciales comme les fleches, enter, delete, ...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 5
    Dernier message: 13/02/2006, 14h45
  2. Popup se chargeant sans attendre la fenêtre 'mère'?
    Par xavier.misseri dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 10/11/2005, 13h10
  3. [Système] Lancer un script sans attendre sa fin ?
    Par parisien dans le forum Langage
    Réponses: 9
    Dernier message: 03/11/2005, 22h09
  4. [Système] Lancer un executable sans attendre la fin
    Par raptor70 dans le forum Langage
    Réponses: 1
    Dernier message: 27/10/2005, 14h25
  5. [Dos] Lancer une commande dos sans attendre la fin
    Par MrEddy dans le forum Windows
    Réponses: 4
    Dernier message: 09/06/2005, 17h38

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