Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.
La shoutbox n'est pas chargée par défaut pour des raisons de performances. Cliquez pour charger.

Forum Casio - Vos tutoriels et astuces


Index du Forum » Vos tutoriels et astuces » Saisie en temps réel (sans le ?) avec un code court
Tsuneo Hors ligne Membre Points: 973 Défis: 51 Message

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


1, 2 Suivante
Alex BasicC Hors ligne Ancien modérateur Points: 1734 Défis: 83 Message

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.
Pierrotll Hors ligne Ancien administrateur Points: 5488 Défis: 41 Message

Citer : Posté le 15/10/2012 19:43 | #


Tsuneo a écrit :
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.
Tsuneo Hors ligne Membre Points: 973 Défis: 51 Message

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
Ninestars Hors ligne Membre Points: 2462 Défis: 24 Message

Citer : Posté le 21/03/2013 23:04 | #


Oui ou en espagnol aussi
Bien pratique cette astuce
Tsuneo Hors ligne Membre Points: 973 Défis: 51 Message

Citer : Posté le 22/03/2013 19:32 | # | Fichier joint


"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 !

Calculatrices : Graph 35+ USB tweakée et Classpad 330
Suivez moi et mon humour dévastateur ici focliquéla
Ninestars Hors ligne Membre Points: 2462 Défis: 24 Message

Citer : Posté le 25/03/2013 18:36 | #


Top cette astuce, ca remplace le ? en quelques octets, en plus c'est super simple à utiliser.
Scientifix Hors ligne Membre Points: 762 Défis: 30 Message

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 SERAI ABSENT POUR 2 ANS A+

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
--------------------------------------------------------

Calculatrice : Graph 75
Lephenixnoir En ligne Administrateur Points: 24671 Défis: 170 Message

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.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Scientifix Hors ligne Membre Points: 762 Défis: 30 Message

Citer : Posté le 25/06/2014 20:42 | #


Comment ça composer une Str au fur et a mesure ?
JE SERAI ABSENT POUR 2 ANS A+

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
--------------------------------------------------------

Calculatrice : Graph 75
Lephenixnoir En ligne Administrateur Points: 24671 Défis: 170 Message

Citer : Posté le 25/06/2014 20:43 | #


À chaque fois que tu entres un caractère, tu l'ajoutes à ta chaîne.
StrCat(Str 1,StrMid(Str 2,G-51,1))→Str 1

Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Positon Hors ligne Rédacteur Points: 2396 Défis: 57 Message

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 +
Scientifix Hors ligne Membre Points: 762 Défis: 30 Message

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 SERAI ABSENT POUR 2 ANS A+

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
--------------------------------------------------------

Calculatrice : Graph 75
Lephenixnoir En ligne Administrateur Points: 24671 Défis: 170 Message

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.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Positon Hors ligne Rédacteur Points: 2396 Défis: 57 Message

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 ?
Dark storm Hors ligne Labélisateur Points: 11641 Défis: 176 Message

Citer : Posté le 25/06/2014 20:51 | #


Dans un cas il faut utiliser les strings, dans l'autre les locates
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Scientifix Hors ligne Membre Points: 762 Défis: 30 Message

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 SERAI ABSENT POUR 2 ANS A+

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
--------------------------------------------------------

Calculatrice : Graph 75
Positon Hors ligne Rédacteur Points: 2396 Défis: 57 Message

Citer : Posté le 25/06/2014 21:01 | #


Comme ceci alors :
<un nombre>->A
<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
Scientifix Hors ligne Membre Points: 762 Défis: 30 Message

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 SERAI ABSENT POUR 2 ANS A+

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
--------------------------------------------------------

Calculatrice : Graph 75
Lephenixnoir En ligne Administrateur Points: 24671 Défis: 170 Message

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.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Maliafo Hors ligne Membre Points: 236 Défis: 27 Message

Citer : Posté le 25/06/2014 21:08 | #


1->A~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

Comme ça Scientifix ?
Comment recouvrir la Terre avec du cuir ?
Avec la semelle de nos chaussures, on en fait autant
1, 2 Suivante

LienAjouter une imageAjouter une vidéoAjouter un lien vers un profilAjouter du codeCiterAjouter un spoiler(texte affichable/masquable par un clic)Ajouter une barre de progressionItaliqueGrasSoulignéAfficher du texte barréCentréJustifiéPlus petitPlus grandPlus de smileys !
Cliquez pour épingler Cliquez pour détacher Cliquez pour fermer
Alignement de l'image: Redimensionnement de l'image (en pixel):
Afficher la liste des membres
:bow: :cool: :good: :love: ^^
:omg: :fusil: :aie: :argh: :mdr:
:boulet2: :thx: :champ: :whistle: :bounce:
valider
 :)  ;)  :D  :p
 :lol:  8)  :(  :@
 0_0  :oops:  :grr:  :E
 :O  :sry:  :mmm:  :waza:
 :'(  :here:  ^^  >:)

Σ π θ ± α β γ δ Δ σ λ
Veuillez donner la réponse en chiffre
Vous devez activer le Javascript dans votre navigateur pour pouvoir valider ce formulaire.

Si vous n'avez pas volontairement désactivé cette fonctionnalité de votre navigateur, il s'agit probablement d'un bug : contactez l'équipe de Planète Casio.

Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 92 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements

Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd