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

Turbo Pascal Discussion :

Code ASCII touche retour et flèches [Turbo Pascal]


Sujet :

Turbo Pascal

  1. #1
    Futur Membre du Club
    Inscrit en
    Mai 2008
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 7
    Points : 7
    Points
    7
    Par défaut Code ASCII touche retour et flèches
    Bonsoir,
    voilà je voudrais savoir comment detecter que la touche de retour (les 4 flèches) a été tapée en Turbo Pascal.
    J'ai essayé d'avoir son code ascii, j'ai trouvé que c'est le OM (0.75) mais comment le declarer pour pouvoir dire par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    x:= char; c,v:integer;
    begin 
    x:= readkey;
    c:= wherex; v:= wherey;
    if x = OM ou  x = chr(0.75) then 
    gotoxy((x-1),y);
    end.
    MERCI d'avance

  2. #2
    Membre habitué Avatar de bs.box
    Inscrit en
    Mai 2008
    Messages
    174
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 174
    Points : 173
    Points
    173
    Par défaut Bonjour..
    Moi personnellement, je n'ai jamais vu un nombre comme 0.75
    sur une fonction Chr().
    En tout cas.

    Les Codes ASCII pour les touches de directions sont les suivants:

    (203-128) -> GAUCHE;
    (205-128) -> DROITE
    (200-128) -> HAUT
    (208-128) -> BAS


    a+
    ______________________________________________________________________
    Le sketch qui m'a marqué le plus! écoutez les programmeurs : Site de Yan Marchal

  3. #3
    Membre éprouvé Avatar de defluc
    Homme Profil pro
    Architecte
    Inscrit en
    Mai 2002
    Messages
    1 383
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 383
    Points : 1 199
    Points
    1 199

  4. #4
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 942
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 942
    Points : 5 654
    Points
    5 654
    Par défaut
    Fao,
    Citation Envoyé par Bibou_ini Voir le message
    bon soir,
    voila je voudrais savoir comment detecté que la touche de retour ( les 4 fleches ) a été tapé en turbopascal .
    j'ai esseyé d'avoir son code ascii j'ai trouver que c'est le OM (0.75)
    Je suis curieux de voir le test qui t'a donné ces valeurs.
    Si les cons volaient, il ferait nuit à midi.

  5. #5
    Membre habitué Avatar de bs.box
    Inscrit en
    Mai 2008
    Messages
    174
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 174
    Points : 173
    Points
    173
    Par défaut Salut..
    Citation Envoyé par Bibou_ini
    MERCI
    le code #75 est bon mais le curseur ne revient pas en arrier il reste a sa place et efface ce qu'il ya juste devant lui
    voila mon program ( je ve faire : quant je tap la fleche gauche le curseur revien en arrier )
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    program test ;
    uses wincrt,crt;
    var s,x: char ;c,v,i:integer ;
    begin
     
    repeat
      i:= 0;
      x:= readkey;
      c:= wherex ; v := wherey;
            if x= #75 then
                begin
                   gotoxy(c-2,v);
                   i:=1
                end;
      if i<>1 then
          begin
              write(x);
          end;
    until x='a';
    readln;
    end.
    MERCI
    MERCI
    le code #75 est bon mais le curseur ne revient pas en arrier
    il reste a sa place et efface ce qu'il ya juste devant lui
    voila mon program ( je ve faire :
    quant je tap la fleche gauche le curseur revien en arrier )
    Voici la réponse;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
    uses Crt;
    var   C:Char; {Caractere a lire}
     
    begin
    ClrScr; {Effacer l'ecran}
    WriteLn('Rappel: Pour Quittrez Appuyez Sur ESC.');
    WriteLn('Appuyez Sur La Touche ENTREE Pour Continuer...');
    ReadLn;
    ClrScr; {Effacer l'ecran}
    repeat
     C:=ReadKey;  {Lire Le Caractere}
     if C in [#75,#77,#72,#80]
        then begin
        Case C Of
       #75 : GotoXY(WhereX-1,WhereY);  {GAUCHE}
       #77 : GotoXY(WhereX+1,WhereY);  {DROITE}
       #72 : GotoXY(WhereX,WhereY-1);   {HAUT}
       #80 : GotoXY(WhereX,WhereY+1);   {BAS}
        End;
        C:=#0;
             end
        else if C<>#0 then Write(C)
    until C=#27; {jusqu'a la touche ESCAPE}
    end.
    Bon Courage..
    a+
    ______________________________________________________________________
    Le sketch qui m'a marqué le plus! écoutez les programmeurs : Site de Yan Marchal

  6. #6
    Expert confirmé
    Avatar de krachik
    Inscrit en
    Décembre 2004
    Messages
    1 964
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 964
    Points : 4 015
    Points
    4 015
    Par défaut
    Bonjour
    @Bibou_ini Le plus simple à faire dans ces genres de situation c'est écrire un petit programme qui te permet d'avoir le code ascii d'une touche lors d'un appui sur cette touche la

    Cordialement
    Je suis ce que je suis grâce à ce que nous sommes tous Humanité aux Humains!! !

    Entre ce que je pense, ce que je veux dire, ce que je crois dire, ce que je dis ce que vous avez envie d'entendre, ce que vous croyez entendre, ce que vous entendez, ce que vous avez envie de comprendre, ce que vous comprenez ... Il y a dix possibilités que nous ayons des difficultés à communiquer. Mais essayons quand meme ....... E. Wells

  7. #7
    Membre habitué Avatar de bs.box
    Inscrit en
    Mai 2008
    Messages
    174
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 174
    Points : 173
    Points
    173
    Par défaut Bonjour..
    Citation Envoyé par Bibou_ini
    JE vous Remerci du font du coeur sa marche a merveil
    si vous vaitbesoin de qqc que je peut faire pour vous je ss la merci a bien tot
    Ouais,.. ça a marché..


    a+
    ______________________________________________________________________
    Le sketch qui m'a marqué le plus! écoutez les programmeurs : Site de Yan Marchal

  8. #8
    Futur Membre du Club
    Inscrit en
    Mai 2009
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 6
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par +bsdocuments+ Voir le message
    Voici la réponse;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
    uses Crt;
    var   C:Char; {Caractere a lire}
     
    begin
    ClrScr; {Effacer l'ecran}
    WriteLn('Rappel: Pour Quittrez Appuyez Sur ESC.');
    WriteLn('Appuyez Sur La Touche ENTREE Pour Continuer...');
    ReadLn;
    ClrScr; {Effacer l'ecran}
    repeat
     C:=ReadKey;  {Lire Le Caractere}
     if C in [#75,#77,#72,#80]
        then begin
        Case C Of
       #75 : GotoXY(WhereX-1,WhereY);  {GAUCHE}
       #77 : GotoXY(WhereX+1,WhereY);  {DROITE}
       #72 : GotoXY(WhereX,WhereY-1);   {HAUT}
       #80 : GotoXY(WhereX,WhereY+1);   {BAS}
        End;
        C:=#0;
             end
        else if C<>#0 then Write(C)
    until C=#27; {jusqu'a la touche ESCAPE}
    end.
    Bon Courage..
    a+
    juste une question qu'esque ça veut dire les #75.... ??

  9. #9
    Futur Membre du Club
    Inscrit en
    Mai 2009
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 6
    Points : 6
    Points
    6
    Par défaut
    es qu'on il existe un code comme "#75...." pour la touche entrer ????
    merci

  10. #10
    Rédacteur/Modérateur
    Avatar de M.Dlb
    Inscrit en
    Avril 2002
    Messages
    2 464
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 464
    Points : 4 311
    Points
    4 311
    Par défaut
    Ca correspond au code ASCII noté en décimal. Par exemple, #65 donne le caractère A.

    Pour la touche entrée, qui en réalité envoie le code caractère 13 (Carriage return), peut être donné avec la combinaison #13.
    M.Dlb - Modérateur z/OS - Rédacteur et Modérateur Pascal

  11. #11
    Futur Membre du Club
    Inscrit en
    Mai 2009
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 6
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par wormful_sickfoot Voir le message
    Ca correspond au code ASCII noté en décimal. Par exemple, #65 donne le caractère A.

    Pour la touche entrée, qui en réalité envoie le code caractère 13 (Carriage return), peut être donné avec la combinaison #13.
    merci wormful_sickfoot , j'ai pigé

  12. #12
    Membre du Club

    Inscrit en
    Janvier 2009
    Messages
    37
    Détails du profil
    Informations personnelles :
    Âge : 56

    Informations forums :
    Inscription : Janvier 2009
    Messages : 37
    Points : 50
    Points
    50
    Par défaut
    Je me permets d'apporter une précision. Dans le domaine ascii, il existe les codes normaux, comme les lettres, les chiffres, etc...

    Les flèches sont des codes ascii "spéciaux", càd qu'ils renvoient deux codes ascii. Enfin, je ne sais pas trop ce qu'ils renvoient, mais je vais m'expliquer par l'exemple suivant.

    Je veux déclencher une action si j'appuie sur "flèche haut", code ascii 72, mais touche spéciale du clavier.

    Si j'écris :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    VAR cle : char;
    BEGIN
    cle:=readkey;
    if cle=chr(72) then begin
       {peu importe l'action}
    end.
    Alors, l'action pourra être déclenchée fort heureusement par la touche que je visais, "flèche haut",mais aussi par la touche "H". En effet, les deux renvoient le code ascii final #72.

    Si en revanche j'écris :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    VAR cle : char;
    BEGIN
    cle:=readkey;
       i f cle=#0 then begin {signifie qu'un code ascii spécial vient d'être frappé}
          cle:=readkey; {je dois relire le deuxième code envoyé par le fait d'avoir frappé une touche spéciale}
          if cle=chr(72) then begin
             {peu importe l'action}
          end;
       end;
    end.
    Ici, seule la touche "flèche haut" déclenchera l'action.

    Ceci est valable pour les touches comme les flèches, les F1 à F9, etc...
    Par exemple, F9 renvoie le code ascii final #67 qui est aussi le code de "C". Avec le passage par le test de touche spéciale, on évite cet écueil.

    J'espère avoir contribué au débat. J'ai un petit programme qui gère cette affaire, parce que je ne me souviens pas toujours des codes. Le voici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    PROGRAM ASCII;
     
    USES CRT;
     
    VAR
       cle : char;
       caractere_special : boolean;
     
     
    PROCEDURE FOND;
    begin
       clrscr;
       gotoxy(25,1);
       write('TAPER SUR UNE TOUCHE POUR TROUVER SON CODE ASCII');
       gotoxy(25,2);
       write('<ESC> pour quitter (code ASCII 27)');
       gotoxy(25,10);
       write('>>>');
    end;
     
     
    BEGIN
       textmode(3);
       textcolor(15);
       textbackground(0);
       fond;
       repeat
          cle:=readkey;
          fond;
          if cle=#0 then begin
             cle:=readkey;
             caractere_special:=true;
          end
          else caractere_special:=false;
          gotoxy(30,10);
          write(ord(cle));
          if caractere_special=true then begin
             gotoxy(25,11);
             write('CARACTERE SPECIAL');
          end;
       until cle=chr(27);
       clrscr;
    END.

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

Discussions similaires

  1. Code ASCII du retour à la ligne dans une cellule Excel
    Par soumou dans le forum Assembleur
    Réponses: 9
    Dernier message: 26/12/2017, 19h26
  2. code ASCII pour Retour chariot
    Par tepuy dans le forum Conception
    Réponses: 1
    Dernier message: 02/07/2012, 22h30
  3. Code ASCII de la touche 'Entrée'
    Par mouloudéen dans le forum Access
    Réponses: 15
    Dernier message: 21/06/2006, 12h35
  4. [Key.isDown] Controler une touche avec code ascii
    Par arnolem dans le forum Flash
    Réponses: 3
    Dernier message: 30/01/2006, 14h34
  5. Code ASCII d'une touche sous Mozilla
    Par SPA dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 02/02/2005, 08h47

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