Saisie en temps réel (sans le ?) avec un code court
Posté le 15/10/2012 19:24
Bonjour !
Je voulais vous montrer une méthode de reconnaissance des touches que j'ai pas mal utilisé et que j'utilise encore !
On peut associer n'importe quel caractère à n'importe quelle touche très facilement.
"369 258 0147"->Str 2 // ceci est la string qui stocke la disposition des touches de la calculette (voir ci-dessous) NB: il y a 7 espaces puis 6 espaces
While 1
Getkey->G
If G And G>51:Then
StrMid(Str 2,G-51,1)->Str 1 // ceci est la fonction qui permet de connaître le caractère associé à la touche appuyée
ClrText
Locate 1,1,Str 1
IfEnd
WhileEnd
Je vais essayer de vous expliquer ça clairement.
Au lieu de faire un programme très long du style "G=1=>"A"->Str 1 ... G=26=>"Z"->Str 1", vous pouvez facilement raccourcir cela !
On parcourt le clavier dans l'ordre de Getkey et on met les caractères qui viennent dans l'ordre. En fait, la fonction coupera juste la partie de la Str 2 qui nous intéresse en fonction de la touche appuyée.
On met des espaces pour toutes les touches qu'on ne souhaite pas utiliser.
Si vous n'avez pas compris, dites-le, j'essaierai d'être plus clair.
Avec le programme que j'ai fait en haut, on peut du coup utiliser Exp(Str1) (en vérifiant auparavant que Str 1 ne contient pas un espace avec StrComp) pour obtenir le nombre appuyé en temps réel (sans utiliser "?") avec un code assez court.
J'espère que cela pourra vous aider pour la saisie en temps réel de nombres, d'expressions ou de texte.
C'est avec cette méthode que j'ai créé mon Plus ou moins chronométré d'ailleurs.
J'espère vraiment que vous avez compris ce que j'ai pâlement essayé d'expliquer
Petit rappel d'un message expliquant le fonctionnement de cette méthode avec les lettres :
Moi-même a écrit :"LF YT KE XS JD WROIC VQNHB ZUPMGA"->Str 1
While 1
Getkey=>Locate 1,1,StrMid(Str 1,Getkey-24,1)
WhileEnd
Voilà mon code pour la saisie de lettres. On voit que la Str 1 sert à stocker la disposition des lettres sur la calculatrice. On démarre à partir de Getkey=25 : je mets la lettre L. Ensuite Getkey=26, je stocke la lettre F. Je laisse des espaces pour toutes les valeurs de Getkey qui ne correspondent pas à une lettre, de Getkey=27 à Getkey=31, je laisse donc 5 espaces. Puis on repart avec Getkey=32 et la lettre Y. Getkey=33 et la lettre T. Getkey=34, je mets un espace. Getkey=35, la lettre J... Ainsi de suite, jusqu'à la fin. Ensuite on extrait le caractère désiré de la Str grâce à la fonction StrMid.
J'espère que vous avez compris mon système !
En tout cas je pense que c'est le système le plus optimisé pour la saisie de lettres en Basic...
En PJ, le programme !
Fichier joint
Citer : Posté le 25/06/2014 21:08 | #
While Getkey!=31
If Getkey
Then Locate A,B,StrMid(Str 1,Getkey-24,1)
Isz A
Isz B
A=22=>1->A
B=8=>1->B
IfEnd
WhileEnd
Comme ça Scientifix ?
Avec la semelle de nos chaussures, on en fait autant
Citer : Posté le 25/06/2014 21:15 | #
Heu, ton programme ne fait absolument rien Maliafo, y a juste un 1 qui s'affiche en haut a droite ...
Je suis fan de Mathématiques et de Sciences en général (d'où mon nom ). Consultez mes programmes en rapport avec les Maths
Tableau de variations
Equations Diophantiennes
Conversion d'un nombre décimal en fraction
Citer : Posté le 25/06/2014 21:17 | #
A oui autant pour moi, j'avais pas fait gaffe, j'ai juste recopié
Do:LpWhile Getkey[/b]
While Getkey!=31
If Getkey
Then Locate A,B,StrMid(Str 1,Getkey-24,1)
Isz A
Isz B
A=22=>1→A
B=8=>1→B
IfEnd
WhileEnd
Avec la semelle de nos chaussures, on en fait autant
Citer : Posté le 25/06/2014 21:19 | #
Donc je pense que le code ci-dessus contient la solution, il faut juste remplacer les lettres par des nombres dans la chaîne de caractères, et faire la boucle comme ceci :
0->D
While Not D
If Getkey
Then Exp(StrMid(Str 1,Getkey-24,1))->D
Locate A,B,D
IfEnd
WhileEnd
Ajouté le 25/06/2014 à 21:20 :
Me voilà royalement grillé
Citer : Posté le 25/06/2014 21:25 | #
Euh .. maintenant y a le carré de chargement en haut a droite, mais si on tape quelque chose rien ne se passe Maliafo ...
Et positon, ton programme a une syntaxe error ...
Je suis fan de Mathématiques et de Sciences en général (d'où mon nom ). Consultez mes programmes en rapport avec les Maths
Tableau de variations
Equations Diophantiennes
Conversion d'un nombre décimal en fraction
Citer : Posté le 25/06/2014 21:51 | #
Il manque un tout petit "Then" pour que ça fonctionne (je subodore qu'il ait juste ommis de la taper).
Tu aurais pu trouver la solution seul quand même Scientifix !
La Planète Casio est accueillante : n'hésite pas à t'inscrire pour laisser un message ou partager tes créations !
Citer : Posté le 25/06/2014 23:21 | #
Ah désolé
Quelqu'un a corrigé apparament.
Citer : Posté le 26/06/2014 10:26 | #
Oups, dsl j'ai survolé le texte et je l'ai rentré dans ma calculatrice sans trop faire attention... Merci !
Je suis fan de Mathématiques et de Sciences en général (d'où mon nom ). Consultez mes programmes en rapport avec les Maths
Tableau de variations
Equations Diophantiennes
Conversion d'un nombre décimal en fraction