begin process at 2012 05 29 03:40:21
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

Le getch() ne fonctionne pas comme je veux


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Le getch() ne fonctionne pas comme je veux

jeudi 24 mars 2005 à 15:05:19 | Le getch() ne fonctionne pas comme je veux

kobee12

Bonjour à tous,

j'ai un ch'tit programme avec une fonction de saisie. J'utilise la fonction getch() pour récupérer chaque caractère que l'on tape.
J'utilise les flêches également, les codes ASCII sont :
#define UP      72
#define LEFT    75
#define RIGHT   77
#define DOWN    80
Seulement, quand j'appuie sur une des flêches, il m'affiche -32 suivi du code ASCII de la flêche et pas seulement le code ASCII, par ex. pour la flêche gauche -3275 au lieu de 75 tout simplement.

Voici la boucle dans laquelle je fais mon switch :
do
 {
     chaine = new char[taille];
     if(tmp!=NULL) {
          for(int i = 0;i < taille; i++) {
                  chaine[i] = tmp[i];
          }
     }
     car = getch();
     cout << (int)car;
     switch(car) {
         case ENTER :
              chaine[taille-1] = '\0';
              return chaine;
         case LEFT  :
              if( x > 0 ) {
                  x--;
                  taille--;
                  Position.X = x;
                  Position.Y = y;
                  SetConsoleCursorPosition(hOut, Position);             
              }
              break;
         case RIGHT :
              if( x < (strlen(chaine)+1) ) {
                  x++;
                  taille++;
                  Position.X = x;
                  Position.Y = y;
                  SetConsoleCursorPosition(hOut, Position);
              }
              break;
         case UP    :
              break;
         case DOWN  :
              break;
         case DEL   :
              cout << "!DEL!" <<endl;
              break;
         case BCKSPC:
              if(taille>1) {
                  taille--;
                  tmp = new char[taille];
                  for( int i = 0;i<taille;i++) {
                      tmp[i] = chaine[i];
                  }
              }
              else if (taille == 1) {
                   taille = 1;
                   chaine = NULL;
                   tmp = NULL;
              }
              x--;
              Position.X = x;
              Position.Y = y;
              SetConsoleCursorPosition(hOut, Position);
              cout << " ";
              SetConsoleCursorPosition(hOut, Position);
              break;
         default    :
              chaine[taille-1] = car;
              //cout << chaine[taille-1];
               
              tmp = new char[taille];
              tmp = chaine;
              taille++;
              x++;
              break;
     }

     fflush(stdin);
 }while(1);

J'avais déjà fais un prgm dans le même genre avec Dev-cpp 4 et ça fonctionnait correctement.
Là j'utilise wxDev-cpp 4.9.9.2 après MAJ.
Quelqu'un serait pourquoi il me saisie deux caractères et non un seul

Merci d'avance
Kobee12

jeudi 24 mars 2005 à 15:54:41 | Re : Le getch() ne fonctionne pas comme je veux

racpp

Administrateur CodeS-SourceS
Réponse acceptée !
Salut,
Les flèches n'ont pas de codes ASCII (Pareil pour F1-F12, PAGE DOWN, PAGE UP, HOME, END, INSERT et DEL). Les codes ASCII 72, 75, 77 et 80 correspondent respectivement aux lettres majuscules  H, K, M, et P. Si  getch() te retourne un code différent je crois que c'est une bonne chose car cela te permet de différencier les flèches des lettres citées. Avec d'autres versions de getch(), comme celle de Visual C 6, on est obligé d'appeler getch() de nouveau quand le code retourné est 0 ou 224 pour récupérer le code de la touche (non ASCII) comme les flèches ou les touches de fonctions etc... comme dans ce code source:
http://www.cppfrance.com/code.aspx?id=26179
Avec ta version de getch(), tu n'as pas besoin de tout cela puisque le code retouné te permet d'être sûr qu'il s'agit bien d'une flèche et non d'une lettre. Il te suffit donc de l'exploiter dans ton programme.

jeudi 24 mars 2005 à 17:38:53 | Re : Le getch() ne fonctionne pas comme je veux

kobee12

Ok merci!!!

J'ai adapté mon prog pour que ça fonctionne.
Merci de ta réponse



Cette discussion est classée dans : taille, chaine, case, position, tmp


Répondre à ce message

Sujets en rapport avec ce message

taille du chaine (+vicieux kon le croit....) [ par Xs ] salut !!a peu rpes tout le monde sait qu'on se sert de strlen(...) ?bon et bien moi, je veux pas mesurer sa taille en caracteres (strlen), mais sa tai chercher la position d'un caractere [ par Johjo ] Bon, je cherche à obtenir la position d'une chaine de caractere dans une autre chaine de caractere.Mais les seuls fonctions que j'ai trouvé me renvoye taille en pixel des chaine en opengl [ par adidmamah ] j'imagine que vous connaissez déja lalgo de nehe pour afficher du texte en opengl un sorte de print ! en fait jvoudrai connaitre la taille en pixel de problème d'allocation mémoire dans ma classe [ par Bub325 ] Salut, j'ai un problème dans le code suivant au niveau de l'allocation mémoire de tmp.a = new char... dans operator+, et je ne sait pas du tout pourqu FONCTION STR de VB - Trouve la position dans la chaine [ par psycomel ] bonsoir, j'aurais aimé savoir si il y avait une solution autre que de passer par une boucle en parcourant tous les caracteres d'une chaine pour trouve taille et position fenetre mfc mdi visual c++ [ par sofbboy ] Bonjour à tous, Je suis en train de faire une appli mdi mfc. Je cherche à changer la taille et la position des fentres que je crée. Je crée en fait 2 [C/C++]Taille chaine caractère [ par goutbouyo ] Salut,Je n'arrive pas à définir la taille de ma chaine de caractère à l'aide d'une variable (nb).CHAR CHAINE[NB];En fait il faut que je limite la tail taille et position d'une fenetre en c++ [ par newuik ] Bonjour a tous!! Voici mon probleme: je souhaiterais récupérer la taille et la position d'une fenetre en c++ mercie d'avance newuik chercher la position d'un caractère dans une chaine [ par Vishnouu ] Bonjour, je suis encore débutant en c/c++ je vous explique ce que je veux faire : voici une chaine de caractères string alpha = abcdefghijklmnopqr compilation .o [ par xantro ] bonjour a tous et a toutes. J'aurai besoin d 'un coup de main pour un probleme de compilation. Voila, j'ai mon programme avec plusieurs fichiers (fic


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,796 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales