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

mighty_warrior 124 Messages postés lundi 12 juin 2006Date d'inscription 9 février 2010 Dernière intervention - 22 avril 2008 à 20:56 - Dernière réponse : cs_Delphiprog 4580 Messages postés samedi 19 janvier 2002Date d'inscription 9 janvier 2013 Dernière intervention
- 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
Caribensila 2674 Messages postés jeudi 15 janvier 2004Date d'inscription 11 mai 2018 Dernière intervention - 22 avril 2008 à 21:34
3
Merci
Salut,

Ord('A') 

et l'inverse  chr(65).

Merci Caribensila 3

codes-sources a aidé 87955 internautes ce mois-ci

Commenter la réponse de Caribensila
Meilleure réponse
Cirec 4221 Messages postés vendredi 23 juillet 2004Date d'inscription 11 mai 2018 Dernière intervention - 23 avril 2008 à 11:38
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="" />

Merci Cirec 3

codes-sources a aidé 87955 internautes ce mois-ci

Commenter la réponse de Cirec
mighty_warrior 124 Messages postés lundi 12 juin 2006Date d'inscription 9 février 2010 Dernière intervention - 22 avril 2008 à 22:58
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
mighty_warrior 124 Messages postés lundi 12 juin 2006Date d'inscription 9 février 2010 Dernière intervention - 22 avril 2008 à 23:07
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
mighty_warrior 124 Messages postés lundi 12 juin 2006Date d'inscription 9 février 2010 Dernière intervention - 23 avril 2008 à 00:03
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
mighty_warrior 124 Messages postés lundi 12 juin 2006Date d'inscription 9 février 2010 Dernière intervention - 23 avril 2008 à 00:52
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
cs_Delphiprog 4580 Messages postés samedi 19 janvier 2002Date d'inscription 9 janvier 2013 Dernière intervention - 23 avril 2008 à 22:48
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.