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


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

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 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
Maliafo Hors ligne Membre Points: 236 Défis: 27 Message

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


A oui autant pour moi, j'avais pas fait gaffe, j'ai juste recopié
1→A~B[b]
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

Comment recouvrir la Terre avec du cuir ?
Avec la semelle de nos chaussures, on en fait autant
Positon Hors ligne Rédacteur Points: 2396 Défis: 57 Message

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

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 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
Ne0tux Hors ligne Membre d'honneur Points: 3525 Défis: 265 Message

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 !
Mes principaux jeux : Ice Slider - CloneLab - Arkenstone

La Planète Casio est accueillante : n'hésite pas à t'inscrire pour laisser un message ou partager tes créations !
Positon Hors ligne Rédacteur Points: 2396 Défis: 57 Message

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


Ah désolé
Quelqu'un a corrigé apparament.
Scientifix Hors ligne Membre Points: 762 Défis: 30 Message

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

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