Comment convertir un char en sa valeur code touche? [Résolu]

Messages postés
124
Date d'inscription
lundi 12 juin 2006
Dernière intervention
9 février 2010
- - Dernière réponse : cs_Delphiprog
Messages postés
4580
Date d'inscription
samedi 19 janvier 2002
Dernière intervention
9 janvier 2013
- 23 avril 2008 à 22:48
Bonsoir,

donc ma question: comment convertir un char en sa valeur code touche?

par exemple pour la lettre A on sait que son code touche est 65 mais dans mon programme la lettre est dans un char alors comment récupérer le code touche

merci beaucoup!
Afficher la suite 

Votre réponse

7 réponses

Meilleure réponse
Messages postés
2684
Date d'inscription
jeudi 15 janvier 2004
Dernière intervention
26 juillet 2018
12
3
Merci
Salut,

Ord('A') 

et l'inverse  chr(65).

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 119 internautes nous ont dit merci ce mois-ci

Commenter la réponse de Caribensila
Messages postés
4229
Date d'inscription
vendredi 23 juillet 2004
Dernière intervention
3 août 2018
39
3
Merci
oh la oh la


c'est pas du tout comme ça que Keybd_Event fonctionne :

{Reste appuyé ou relache une touche aKey
en
fonction du paramètre Down}
Procedure
ToogleKey(Const aKey : Byte; Const Down: Boolean = True);
Var KeyDown : Byte;
Begin

  If  Not Down Then

    KeyDown : = 2
  Else
    KeyDown := 0;

  keybd_event(aKey, 0,
KeyDown, 0);
End ;

{Reste appuyé ou
relache les touches Ctrl et Alt
en fonction du paramètrte Down}
Procedure SimuleCtrlAlt(Const Down: Boolean = True);
Var KeyDown : Byte;
Begin

  ToogleKey(VK_MENU, Down);

  ToogleKey(VK_CONTROL, Down);

End;

{Appuie et relache une touche}
Procedure DoKeybdEvent(Const
aKey : Byte);
Begin

  keybd_event(aKey , 0, 0, 0);

  keybd_event(aKey ,
0, KEYEVENTF_KEYUP, 0);

End;

{Gère
les touches à bascule VerrMaj VerrNum ArrêtDefil}
Procedure SimuleOnOfKey(Const
aKey: Byte; Const IsOn: Boolean =
True);
Begin
  If GetKeyState(aKey)
<> Integer(IsOn) Then

    DoKeybdEvent(aKey);
End ;

Procedure
PressKey(Const aKey : Byte);

Begin
  ToogleKey(aKey);
End;

Procedure
ReleaseKey(Const aKey : Byte);

Begin
  ToogleKey(aKey, False);

End;

{Gère l'appuie n'importe quelle touche du clavier
  c'est
la procédure que l'on utilisera pour simuler l'appuie
  sur les différentes
touches du clavier}
Procedure
SimuleKey(Const aChar: Char);

Begin
  Case aChar Of
    {Touches
majuscules}

    'A'..'Z','0'..'9','?','.','/','§','¨','£','%','µ','°','+':

    Begin

      ToogleKey(VK_SHIFT);


      DoKeybdEvent(VkKeyScan(aChar));

      ToogleKey(VK_SHIFT, False);


    End;

    {Touches Ctrl+Alt}

    '~','#','{','[','|','`','\','^','@',']','}':

    Begin

      SimuleCtrlAlt;

      DoKeybdEvent(VkKeyScan(aChar));


      SimuleCtrlAlt(False);

    End;


    Else
    {Touches minuscules}

      DoKeybdEvent(VkKeyScan(aChar));

  End;
End;


pour l'utilisation c'est simple :
{On s'assure d'être en minuscule
   obligatoire pour
le bon fonctionnement

   ne faire qu'une fois en début de code (dans le OnCreate par Ex.)}

  SimuleOnOfKey(VK_CAPITAL, False);
{et on simule l'appuie des touches}
For I : = 1  To length(mot) Do

  SimuleKey(Mot[I]);

{pour les
combinaisons de touche autres que "standard"}
{Exemple faire un Ctrl+C}

  PressKey(VK_CONTROL);


  SimuleKey('C');

  ReleaseKey(VK_CONTROL);

 
@+
Cirec

<hr siz ="" />

 
@+
Cirec

<hr siz="" />

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 119 internautes nous ont dit merci ce mois-ci

Commenter la réponse de Cirec
Messages postés
124
Date d'inscription
lundi 12 juin 2006
Dernière intervention
9 février 2010
0
Merci
le probléme est que si je fait ord('a') j'obtient 1 et non 65!
Commenter la réponse de mighty_warrior
Messages postés
124
Date d'inscription
lundi 12 juin 2006
Dernière intervention
9 février 2010
0
Merci
en fait ce que je cherche a faire c ça: Avec le code suivant (où c est un char)
 keybd_event( char a convertir en code touche,0,1,0)

par exemple si c represente la lettre A il vaut 65 une fois convertit.

merci
Commenter la réponse de mighty_warrior
Messages postés
124
Date d'inscription
lundi 12 juin 2006
Dernière intervention
9 février 2010
0
Merci
J'ai réussi à remédier a mon probléme de départ comme ceci:

S := 'texte';
if iskeydown('0') then 
 begin
  for i := 1 to length(s) do
   begin
   C := S[i];
   x := ord(c);
   y := 32;
   z := x-y;
   keybd_event(z,0,1,0);
   keybd_event(z,0,2,0);
   end;
end;
Donc quand j'appuie sur la touche 0 j'écrit la valeur de S et tout marche bien

Mon second souci c'est que si S vaut par exemple ' delphifr c cool' il sera écrit comme ceci: delphifrccool.

alors y-a t'il un moyen de gérer les espaces?

merci

ps merci [auteur/CARIBENSILA/217111.aspx Caribensila] ton Ord('A') m'a bien aidé. 
Commenter la réponse de mighty_warrior
Messages postés
124
Date d'inscription
lundi 12 juin 2006
Dernière intervention
9 février 2010
0
Merci
Bon je crois que j'ai de la chance. Je vient de trouver une parade, certe ce n'est sans doute pas la meilleur solution mais bon..je la poste quand même

mot: string;
c: char;
x,y,z,NbrCaractere: integer;

dans formcreate
mot := ' delphifrccool';

dans un timer
if iskeydown('0') then  //quand j'appuie sur la touche zero
begin
for i : = 1 to length(mot) do
  begin
  C :=mot[i];
  x := ord(c);
  y := 32;
  z := x-y;
  keybd_event(z,0,1,0); //j'appuie sur la touche correspondant a chaque lettre composant "mot"
  keybd_event(z,0,2,0);//je relâche la touche correspondant a chaque lettre composant "mot"
  inc(NbrCaractere); //
  if (NbrCaractere=7)xor(NbrCaractere=10) then // si j'ai ecrit 7 lettres (delphi = 6 lettres +1)
   begin
   keybd_event(32,0,1,0); //faire un espace
   keybd_event(32,0,2,0);
   end;
  end;
NbrCaractere := 1;
 end;

voilà.

mais si quelqu'un a une meilleur solution à proposer je suis preneur lol.

allez bonne nuit à tous et merci.
Commenter la réponse de mighty_warrior
Messages postés
4580
Date d'inscription
samedi 19 janvier 2002
Dernière intervention
9 janvier 2013
25
0
Merci
@Cirec : là, tu es bon pour nous faire un tuto sur la gestion du clavier

May Delphi be with you !
<hr color="#008000" />Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.
Commenter la réponse de cs_Delphiprog

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.