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 15/10/2012 19:39 | #
C'est une méthode sympathique félicitation pour cette idée : il y avait une méthode semblable ici mais le programme n'est plus accessible en ce moment.
Citer : Posté le 15/10/2012 19:43 | #
If G And G>51
Si G>51 alors G est forcément différent de 0. La première condition est inutile.
De plus, quitte à donner le code d'une fonction de saisie, autant donner un code utilisable tel quel, et pas seulement un exemple qui affiche le chiffre de la touche enfoncée.
Citer : Posté le 15/10/2012 19:43 | #
J'ai trouvé cette idée avec Ninestars, il nous arrive souvent d'avoir des idées pendant les voyages en train
J'espère que cette idée pourra être utile à certains !
Ajouté le 21/03/2013 à 21:38 :
Tiens, désolé PierrotLL, je n\'ai pas vu ton message, je l\'ai posté en même temps !
Si vous voulez, je peux vous donner ma fonction de saisie au complet quand j\'en aurais le temps. Je pense ce week end !
Calculatrices : Graph 35+ USB tweakée et Classpad 330
Suivez moi et mon humour dévastateur ici focliquéla
Citer : Posté le 21/03/2013 23:04 | #
Oui ou en espagnol aussi
Bien pratique cette astuce
Citer : Posté le 22/03/2013 19:32 | # | Fichier joint
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 !
Calculatrices : Graph 35+ USB tweakée et Classpad 330
Suivez moi et mon humour dévastateur ici focliquéla
Citer : Posté le 25/03/2013 18:36 | #
Top cette astuce, ca remplace le ? en quelques octets, en plus c'est super simple à utiliser.
Citer : Posté le 25/06/2014 20:38 | #
Salut !
Je trouve la commande super ! J'ai une question, si on veut afficher le nombre que l'on a tapé puis afficher un autre nombre qu'on tape ensuite à un autre endroit, on fait comment ?
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
Citer : Posté le 25/06/2014 20:40 | #
Il suffit de composer une Str au fur et à mesure.
Pour plus de détails, je te conseille de télécharger et de tester le programme en PJ du post principal.
Citer : Posté le 25/06/2014 20:42 | #
Comment ça composer une Str au fur et a mesure ?
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 20:43 | #
À chaque fois que tu entres un caractère, tu l'ajoutes à ta chaîne.
Citer : Posté le 25/06/2014 20:47 | #
StrCat n'existe pas, la commande s'appelle StrJoin.
Mais son utilité est douteuse car on peut concaténer avec un +
Citer : Posté le 25/06/2014 20:48 | #
Merci !!
Mais si je met le code écrit dans le post principale, je peux taper mon chiffre, il s'affiche et si je retape un chiffre, celui ci ne se s'écrit pas à un autre endroit, c'est les premier chiffre qui change ...
Je voudrais pouvoir taper un premier chiffre, puis cliquer sur une autre touche et que le chiffre qui correspond à la touche s'affiche a un autre endroit.
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 20:49 | #
Il suffit de changer les coordonnées du Locate.
Au temps pour moi Positon, ça fait trop longtemps que je n'ai plus fait de Basic.
Citer : Posté le 25/06/2014 20:50 | #
En clair, tu voudrais une fonction pour valider la saisie, de façon à savoir si, par exemple, tu écris "59" ou bien un "5" puis un "9".
C'est ça ?
Citer : Posté le 25/06/2014 20:51 | #
Dans un cas il faut utiliser les strings, dans l'autre les locates
Citer : Posté le 25/06/2014 20:52 | #
C'est ce que j'ai fait, j'ai copié le code et je l'ai collé a la suite en changeant les coordonnées du locate mais le programme reste confiné a la boucle du premier code et ne passe jamais au deuxième je ne peux donc pas afficher un nombre autre par ...
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:01 | #
Comme ceci alors :
<un nombre>->B
"LF YT KE XS JD WROIC VQNHB ZUPMGA"->Str 1
While Getkey!=31
Getkey=>Locate A,B,StrMid(Str 1,Getkey-24,1)
WhileEnd
Citer : Posté le 25/06/2014 21:05 | #
Non ce que je veux faire est la chose suivante :
Appuyer sur une touche et afficher un nombre. Puis appuyer sur une autre touche et afficher cet autre nombre a un autre endroit.
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:07 | #
Et bien dans ce cas, il suffit de changer la valeur de A et/ou de B après la saisie et de mettre le tout dans une boucle.
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