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: 11634 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 En ligne Administrateur Points: 24219 Défis: 170 Message

Citer : Posté le 02/12/2014 21:00 | #


En fait il y a un gros risque que lorsque tu démarres en ALPHA_LOCKED tu tapes uniquement des majuscules au clavier. Je me trompe ?

Sinon, faudrait préciser ton problème. Que se passe-t-il ? Tu as des majuscules, tu n'as rien du tout ? Donne-nous des détails, dire que ça ne fonctionne pas ne nous aide pas.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
-florian66- Hors ligne Ancien rédacteur Points: 2383 Défis: 20 Message

Citer : Posté le 03/12/2014 07:27 | #


Ça n'affiche que les majuscules et aucunes minuscules Faudrait je mette NORMAL ?

Faudra aussi rajouter ALOW_Az pour dire qu'il y a le premier caractère en majuscule et tous ce qu'il y a après en minuscule
In Arch, I trust ! And you ?
Lephenixnoir En ligne Administrateur Points: 24219 Défis: 170 Message

Citer : Posté le 03/12/2014 17:59 | #


ALLOW_Az ? Non, autant utiliser des regex basiques ce serait tellement plus utile !
Et pourquoi ça met des majuscules si t'as pas mis ALLOW_AZ ?

Ajouté le 03/12/2014 à 18:07 :
ALLOW_Az ? Non, autant utiliser des regex basiques ce serait tellement plus utile !
Et pourquoi ça met des majuscules si t'as pas mis ALLOW_AZ ?
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Dark storm Hors ligne Labélisateur Points: 11634 Défis: 176 Message

Citer : Posté le 04/12/2014 12:33 | #


Je suis en train d'améliorer la V2, ça sera une V2.1, avec un système de "regex" pour les caractères entrés.
Sortie ce WE quoi qu'il arrive

Ajouté le 04/12/2014 à 12:34 :
Au passage, pour passer en minuscules, F6 est une bonne touche ?
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 04/12/2014 15:46 | #


Ce n'est pas F5 normalement ? Enfin, tu fais comme tu veux.
Mes programmes
Cacher les programmes
Mes défis
Cacher les défis



-florian66- Hors ligne Ancien rédacteur Points: 2383 Défis: 20 Message

Citer : Posté le 04/12/2014 17:58 | #


F6 c'est bien et cool que ça sorte ce WE enfin
In Arch, I trust ! And you ?
Lephenixnoir En ligne Administrateur Points: 24219 Défis: 170 Message

Citer : Posté le 04/12/2014 18:35 | #


En fait c'est [F5] dans les programmes et [F6] dans les e-acts. Le mieux, c'est que ça soit configurable !
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
-florian66- Hors ligne Ancien rédacteur Points: 2383 Défis: 20 Message

Citer : Posté le 05/12/2014 16:00 | #


Tu met les deux au pire
In Arch, I trust ! And you ?
Dark storm Hors ligne Labélisateur Points: 11634 Défis: 176 Message

Citer : Posté le 05/12/2014 18:22 | #


Du coup, vu le nombre de paramètres, j'hésite à les passer via une structure, un peu comme pour le port série. Votre avis ?
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Lephenixnoir En ligne Administrateur Points: 24219 Défis: 170 Message

Citer : Posté le 05/12/2014 18:57 | #


Tu mets une fonction de config :
int EI_config(int parameter, int value);

Exemple d'usage :
if(EI_config(EI_Aa_KEY,30013/*[F5]*/)) return;

Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
-florian66- Hors ligne Ancien rédacteur Points: 2383 Défis: 20 Message

Citer : Posté le 05/12/2014 20:09 | #


Ah oui bonne idée si il y a trop d'argument
In Arch, I trust ! And you ?
Dark storm Hors ligne Labélisateur Points: 11634 Défis: 176 Message

Citer : Posté le 05/12/2014 21:04 | #


Pas con, et je met tout les urées paramètres en valeurs par défaut
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Lephenixnoir En ligne Administrateur Points: 24219 Défis: 170 Message

Citer : Posté le 05/12/2014 21:22 | #


En fait plus précisément, je te conseille de faire ça :
const void *EI_config_manage(int parameter, const void *value)
{
    static struct
    {
        int Aa_key;
        int box_length;
    } config;

    if(value) switch(parameter)
    {
        case EI_Aa_KEY: config.Aa_key = *((unsigned int *)value); break;
        case EI_BOX_LENGTH: config.box = *((unsigned int *)value); break;
    }
    else switch(parameter)
    {
        case EI_Aa_KEY: return (const void *)(config.Aa_key);
        case EI_BOX_LENGTH: return (const void *)(config.box_length);
    }

    return NULL;
}

int EI_init(void)
{
    unsigned int var;
    EI_manage_config(EI_Aa_KEY,&(var=30013));
    EI_manage_config(EI_BOX_LENGTH,&(var=8));
}

int EI_run(void)
{
    unsigned int boxlength;
    const void *pointer;

    pointer = EI_manage_config(EI_BOX_LENGTH,NULL);
    boxlength = *((unsigned int *)pointer);
}

Bref, je suppose que tu vois le principe.

Je détesterais qu'on ait des symboles globaux accessibles à loisir.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Dark storm Hors ligne Labélisateur Points: 11634 Défis: 176 Message

Citer : Posté le 05/12/2014 23:02 | #


Fait, du coup j'en suis à la V2.2
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Lephenixnoir En ligne Administrateur Points: 24219 Défis: 170 Message

Citer : Posté le 06/12/2014 08:59 | #


C'est que ça commence à être sacrément intéressant du coup ! L'idéal (si c'est possible) serait de pouvoir au final, l'utiliser dans tous les contextes (jeux, etc.), j'entends par là qu'elle puisse s'insérer sans trop de difficultés dans les interfaces.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Dark storm Hors ligne Labélisateur Points: 11634 Défis: 176 Message

Citer : Posté le 06/12/2014 12:32 | #


Yep, y'a qu'à voir Prof Layton
Par contre faut que je trouve la cause et fixe le but du curseur : un coup il est en coordonnés Locate, un coup en absolues.
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 06/12/2014 12:34 | #


D'ailleurs, puisque tu en parles, encore merci pour EasyInput. Mais je ne comprend pas pourquoi, selon les calculatrices, il y a ce bug d'affichage ou non (ça me l'a fait mais pas tout le temps, sans le changer).
Mes programmes
Cacher les programmes
Mes défis
Cacher les défis



-florian66- Hors ligne Ancien rédacteur Points: 2383 Défis: 20 Message

Citer : Posté le 06/12/2014 13:04 | #


Un bug à régler car il est assez chiant parce que ça change tous le temps
In Arch, I trust ! And you ?
Dark storm Hors ligne Labélisateur Points: 11634 Défis: 176 Message

Citer : Posté le 07/12/2014 17:46 | # | Fichier joint


Voici la version 2.2 de EasyInput !

Documentation a écrit :
##### INFORMATIONS IMPORTANTES #####
Nom : EasyInput
Auteur : Dark Storm (L.GATIN)
Dernière mise à jour : 06/12/2014
Version : 2.2
Licence : GNU General Public License
####################################


Changelog a écrit :
--- 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


Plus d'infos dans le ReadMe contenu dans l'archive. Je met à jour le topic dès que possible.

Ajouté le 07/12/2014 à 18:21 :
J'ai ajouté un screenshot
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 07/12/2014 19:06 | #


Super la nouvelle présentation !
Juste une coquille :
Pour le Fx9860 SDK : gardez le fichier <EasyInout_.src>
- Pour GCC : gardez le fichier <EasyInput_.s>

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



-florian66- Hors ligne Ancien rédacteur Points: 2383 Défis: 20 Message

Citer : Posté le 08/12/2014 18:47 | #


j'ai un petit problème :
numero=EI_input_string(20,(const char*)"ABCDEFGHIJKLMNOPQRSTUVWXYZ");

et l'erreur
C2220 (E) Modifiable lvalue required for "="

alors que
char numero[21];


In Arch, I trust ! And you ?

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