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 - Projets de programmation


Index du Forum » Projets de programmation » EasyInput
Dark storm Hors ligne Labélisateur Points: 11641 Défis: 176 Message

EasyInput

Posté le 02/06/2014 21:33

INFORMATIONS IMPORTANTES

Nom : EasyInput
Auteur : Dark Storm (L.GATIN)
Dernière mise à jour : 16/02/2015
Version : 3.1
Licence : GNU General Public License



Présentation

EasyInput est une librairie de fonctions destinée à simplifier les méthodes de saisie de texte par un utilisateur.
Elle est utilisable gratuitement, vous pouvez la télécharger sur notre GitLab.


Utilisation

--- Fichiers ---
Quoi qu'il arrive, vous avez besoin des fichiers <EasyInput.c> et <EasyInput.h>
Selon votre compilateur, il vous faut chosir le bon fichier de syscalls :
- Pour le Fx9860 SDK : gardez le fichier <EasyInout_.src>
- Pour GCC : gardez le fichier <EasyInput_.s>

--- Initialisation ---
Utilisez EI_init() pour mettre toutes les valeurs de configuration par défaut.
Ensuite, vous pouvez modifier les paramètres suivants en appelant la fonction EI_manage_config(int parameter, int value).
→ EI_SET_COLUMN : Un nombre entre 1 et 21 qui correspond à la colonne de début de la zone de texte
→ EI_SET_ROW : Idem, mais entre 1 et 8 pour les lignes
→ EI_SET_BOX_LENGTH : La longueur de la zone de texte, en caractères.
→ EI_SET_ALIGN : Le mode d'alignement du texte (EI_ALIGN_LEFT, EI_ALIGN_CENTER, EI_ALIGN_RIGHT)
→ EI_SET_START_MODE : Le mode de départ du curseur (EI_NORMAL, EI_ALPHA, EI_ALPHA_LOCKED)
→ EI_SET_Aa_KEY : Le code de la touche qui servira à changer la casse
Exemple, pour fixer le mode de départ du curseur :
char var;
EI_manage_config(EI_SET_START_MODE, EI_ALPHA);

Si <value> est égale à 0, la fonction retourne un pointeur sur l'élément demandé. Cela permet de récupérer les valeurs de configuration.
Exemple, récupérer la valeur de la longueur de la box :
longueur = EI_manage_config(EI_SET_LENGHT_BOX, NULL);


--- Appel ---
La fonction EI_input_string(int string_length, const char *chars_allowed) retourne un pointeur sur la chaine et doit être appellée de la manière suivante :
my_string = EI_input_string(21, (const char*)".0123456789");

La chaine <chars_allowed> contient tout les caractères dont la saisie est autorisée.

Changelog
Cliquer pour enrouler
--- V3.1 ---
- Simplification du système de configuration

--- V3.0 ---
- Réécriture de la boucle principale
- Correction des bugs concernant les syscalls à destination de l'OS 2.00 et ultérieur (merci à Nemhardy pour l'info)
- Correction des bugs concernant les ajouts de caractères impromptus
- Correction des bugs concernant les alignements de texte

--- V2.3 ---
- Refonte du système d'affichage

--- V2.2 ---
- Refonte du système de configuration
- Ajout de la gestion des minuscules

--- V2.1 ---
- Ajout de la "regex" pour les caractères autorisés
- Correction d'une fuite de mémoire lorsque l'on quitte avec Ac/ON
- Changement de licence

--- V2.0 ---
- Modification du mode de retour de la chaine

--- V1.2 ---
- Correction de quelques bugs

--- V1.0 ---
- Création de la librairie



Lephenixnoir Hors ligne Administrateur Points: 24574 Défis: 170 Message

Citer : Posté le 02/07/2014 18:04 | #


Oui, à tous les coups c'est de l'encodage Linux mal supporté...
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Legolas Hors ligne Ancien rédacteur Points: 3266 Défis: 104 Message

Citer : Posté le 03/07/2014 11:30 | #


Bon... J'ai testé.
Diagnostic :
Génial ! Juste super ! Bravo ! C'est super utile, surtout pour mon google chrome !

Ajouté le 19/07/2014 à 14:01 :
Heu, quelle est la syntaxe de l'utilisation ? Je veux dire, pourquoi ça ne marche pas :


char buffer[14];
[green]//[...][/green]
[b][blue]if[/blue][/b] (IsKeyDown(KEY_CTRL_EXE)==[maroon]1[/maroon] &&  x>10 && x<119 && y>37 && y<49)
        {
            [green]//Barre de recherche[/green]
            Bkey_Set_RepeatTime( 1 , [maroon]40[/maroon] );
            ML_clear_vram();
            ML_clear_screen();
            RestoreDisp(PAGE_1);
            ML_display_vram();

            ML_line(10,[maroon]37[/maroon],[maroon]118[/maroon],[maroon]37[/maroon],[maroon]1[/maroon]);
            ML_line(10,[maroon]49[/maroon],[maroon]118[/maroon],[maroon]49[/maroon],[maroon]1[/maroon]);
            ML_line(9,[maroon]37[/maroon],[maroon]9[/maroon],[maroon]50[/maroon],[maroon]1[/maroon]);
            ML_line(118,[maroon]37[/maroon],[maroon]118[/maroon],[maroon]50[/maroon],[maroon]1[/maroon]);
            
            
            
            EI_input_string(buffer, [maroon]13[/maroon],ALLOW_ALL,[maroon]3[/maroon],[maroon]6[/maroon], [maroon]18[/maroon], LEFT, ALPHA_LOCKED);
                

                

            

            [b][blue]if[/blue][/b](strcmp(buffer,[gray]"P"[/gray]))
            {
                ML_clear_screen();

            }

            


        }

P.S. : Merci d'avance.
Mes programmes
Cacher les programmes
Mes défis
Cacher les défis



Lephenixnoir Hors ligne Administrateur Points: 24574 Défis: 170 Message

Citer : Posté le 19/07/2014 15:23 | #


strcmp() renvoie 0 si les deux chaînes sont identiques.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Legolas Hors ligne Ancien rédacteur Points: 3266 Défis: 104 Message

Citer : Posté le 19/07/2014 15:24 | #


Ah ok ! Donc, :

if(!strcmp(buffer,"P"))
            {
                ML_clear_screen();

            }
?

Ajouté le 19/07/2014 à 15:24 :
Ou

if(strcmp(buffer,"P")==0)
            {
                ML_clear_screen();

            }

Mes programmes
Cacher les programmes
Mes défis
Cacher les défis



Dark storm Hors ligne Labélisateur Points: 11641 Défis: 176 Message

Citer : Posté le 19/07/2014 15:25 | #


Tu cherche à faire quoi ?

Ajouté le 19/07/2014 à 15:25 :
EI_input_string() est bloquant
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Lephenixnoir Hors ligne Administrateur Points: 24574 Défis: 170 Message

Citer : Posté le 19/07/2014 15:25 | #


Tout simplement.
À noter que strcmp() renvoie -1 si le première caractère différent est inférieur dans la première chaîne, et 1 s'il est supérieur.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Legolas Hors ligne Ancien rédacteur Points: 3266 Défis: 104 Message

Citer : Posté le 19/07/2014 15:25 | #



Gracias schön very beaucoup !
Mes programmes
Cacher les programmes
Mes défis
Cacher les défis



Dark storm Hors ligne Labélisateur Points: 11641 Défis: 176 Message

Citer : Posté le 19/07/2014 15:27 | #


Heu, pour afficher une sorte d'historique des recherches ? Si oui il faut que tu reprenne le code, EI_input_string bloque l'execution jusqu'à l'appui sur Menu, EXE ou Ac/ON
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Legolas Hors ligne Ancien rédacteur Points: 3266 Défis: 104 Message

Citer : Posté le 19/07/2014 15:28 | #


Ok, donc pas de do{} while
Mes programmes
Cacher les programmes
Mes défis
Cacher les défis



Dark storm Hors ligne Labélisateur Points: 11641 Défis: 176 Message

Citer : Posté le 19/07/2014 15:32 | #


Tu peux, mais en reprenant la fonction pour la mettre dans la boucle (enfin bidouiller un peu quoi )
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Legolas Hors ligne Ancien rédacteur Points: 3266 Défis: 104 Message

Citer : Posté le 19/07/2014 15:35 | #



[b][blue]do[/blue][/b] {
EI_input_string(buffer, [maroon]13[/maroon],ALLOW_ALL,[maroon]3[/maroon],[maroon]6[/maroon], [maroon]18[/maroon], LEFT, ALPHA_LOCKED);
}[b][blue]while[/blue][/b](IsKeyUp(KEY_CTRL_EXE));


?

Ajouté le 19/07/2014 à 15:35 :
S'il est bloquant, je n'en ai pas besoin ?
Mes programmes
Cacher les programmes
Mes défis
Cacher les défis



Lephenixnoir Hors ligne Administrateur Points: 24574 Défis: 170 Message

Citer : Posté le 19/07/2014 15:36 | #


EI_input_string() permet de récupérer, comme son nom l'indique, toute la chaîne, et non pas un seul caractère.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Legolas Hors ligne Ancien rédacteur Points: 3266 Défis: 104 Message

Citer : Posté le 19/07/2014 15:37 | #


Tiens, le "i" majuscule s'affiche comme un "l".
Mes programmes
Cacher les programmes
Mes défis
Cacher les défis



Lephenixnoir Hors ligne Administrateur Points: 24574 Défis: 170 Message

Citer : Posté le 19/07/2014 15:44 | #


Ou comment tromper GLaDOS...
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Legolas Hors ligne Ancien rédacteur Points: 3266 Défis: 104 Message

Citer : Posté le 19/07/2014 15:50 | #


Donc ça devrait marcher :

if (IsKeyDown(KEY_CTRL_EXE)==1 &&  x>10 && x<119 && y>37 && y<49)
        {
            //Barre de recherche
            Bkey_Set_RepeatTime( 1 , 40 );
            ML_clear_vram();
            ML_clear_screen();
            RestoreDisp(PAGE_1);
            ML_display_vram();

            ML_line(10,37,118,37,1);
            ML_line(10,49,118,49,1);
            ML_line(9,37,9,50,1);
            ML_line(118,37,118,50,1);
            
            
            
            EI_input_string(buffer, 13,ALLOW_ALL,3,6, 18, LEFT, ALPHA_LOCKED);
                

                

            

            if(strcmp(buffer,"PPPPPPPPPPPPP")==0)
            {
                ML_clear_screen();

            }

            


        }


Ajouté le 19/07/2014 à 15:50 :
Ce n'est pas le cas.

Ajouté le 19/07/2014 à 15:51 :
Pourtant, aucune erreur.
Mes programmes
Cacher les programmes
Mes défis
Cacher les défis



Dark storm Hors ligne Labélisateur Points: 11641 Défis: 176 Message

Citer : Posté le 19/07/2014 19:32 | #


Ben si tu compare "PPPPP" à "ppppp", c'est normal que ça fonctionne pas
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Dark storm Hors ligne Labélisateur Points: 11641 Défis: 176 Message

Citer : Posté le 20/07/2014 18:32 | #


Si tu as l'intention de créer de fausses pages, tu peux mettre un truc encore plus trollesque sur la page PC : "L'addin Google de Legolas enfin focntionnel, accedez au web depuis votre calto, cliquez sur le lien pour télécharger !"
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Legolas Hors ligne Ancien rédacteur Points: 3266 Défis: 104 Message

Citer : Posté le 20/07/2014 18:33 | #



Mes programmes
Cacher les programmes
Mes défis
Cacher les défis



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

Citer : Posté le 20/07/2014 22:15 | #


La revue des projets vient de commencer et on cherche des contenus à afficher, mais lui il nous balance quand même sa capture sur le forum dans un vulgaire fichier joint
Legolas Hors ligne Ancien rédacteur Points: 3266 Défis: 104 Message

Citer : Posté le 20/07/2014 22:19 | #


Je l'ai aussi envoyé avec le formulaire de contact Positon.
Mes programmes
Cacher les programmes
Mes défis
Cacher les défis



Dark storm Hors ligne Labélisateur Points: 11641 Défis: 176 Message

Citer : Posté le 20/07/2014 22:19 | #


Je l'ai reçu 30min après avoir écrit la news
Pas grave, ça sera pour la semaine prochaine

Finir est souvent bien plus difficile que commencer. — Jack Beauregard

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