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



-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 ?
Lephenixnoir Hors ligne Administrateur Points: 24228 Défis: 170 Message

Citer : Posté le 08/12/2014 19:03 | #


Ben justement tu peux pas modifier la valeur de la variable.

Dis-toi bien que lorsque tu fais
char numero[21];

Ça te réserve de la mémoire, par exemple à l'adresse 0x808002e4, donc numero a cette valeur : l'adresse de la mémoire reservée.

Et là tu lui dis : "Non, numero tu vas changer de valeur, tu vas prendre la valeur retournée par EI_input_string() avec les paramètres suivants [...]".
Lui va avoir envie de te répondre : "Ouais oh, et la mémoire réservée pour t'en fais quoi là ? Y'a pas de ramasse-miettes, c'est un langage sérieux ici !".

Conclusion : quand tu as un tableau, tu ne peux pas changer directement la valeur du pointeur.
Comment faire alors ? C'est simple :
char *numero;

Après faut voir si EI_input_string() alloue ou non la mémoire : si non, faut bien que tu lui passes le pointeur à un moment ou à un autre, et si oui, faut bien penser à la libérer après utilisation !
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 08/12/2014 19:04 | #


bien dit lephé merci
In Arch, I trust ! And you ?
Dark storm Hors ligne Labélisateur Points: 11634 Défis: 176 Message

Citer : Posté le 08/12/2014 19:21 | #


Yep, EI alloue un buffer de la taille passée en premier argument. Cf ReadMe pour plus d'infos
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
-florian66- Hors ligne Ancien rédacteur Points: 2383 Défis: 20 Message

Citer : Posté le 08/12/2014 19:22 | #


c'est bon lephé m'as expliqué

quand je met que align=LEFT ça me met à droite un truc tout bugé

Ajouté le 08/12/2014 à 19:41 :
EI_init();
    var = 1;
    EI_manage_config(EI_SET_COLUMN, &var);
    var = 2;
    EI_manage_config(EI_SET_ROW, &var);
    var = EI_NORMAL;
    EI_manage_config(EI_SET_START_MODE, &var);
    var = 10;
    EI_manage_config(EI_SET_BOX_LENGTH, &var);
        
    numero=EI_input_string(20,(const char*)"0123456789");


Je ne peux que rentrer un seul caractère ::oops:

Ajouté le 09/12/2014 à 19:42 :
j'ai fais un petit tour des bugs que j'ai trouvé :

on ne peut pas effacer du texte quand on est avec les majuscules
il y a des trucs bizarre quand on modifie des paramètres
quand on rentre par exemple
numero=EI_input_string(20,(const char*)".0123456789");

et quand j'ai mis atoi(numero) ça ne renvoit pas ce que j'ai écrit


Ajouté le 09/12/2014 à 19:51 :
Je pense que ça rajoute un "4" quand tu écrit 118 ça renvoit 1184 et pareil avec 86 ça renvoit 864 omg
In Arch, I trust ! And you ?
Dark storm Hors ligne Labélisateur Points: 11634 Défis: 176 Message

Citer : Posté le 09/12/2014 21:17 | #


Bizarre, je regarde ça tout de suite
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Eltoredo Hors ligne Modérateur Points: 4301 Défis: 35 Message

Citer : Posté le 14/12/2014 18:34 | #


Merci pour la dernière version, elle va m'être bien utile les jours qui viennent ! Cependant, ton lien redirigeant vers le site pour aller dans la rubrique des logiciels ensuite ne marche pas
La procrastination est une vertu. (voir ma description pour comprendre mon raisonnement)
Dark storm Hors ligne Labélisateur Points: 11634 Défis: 176 Message

Citer : Posté le 14/12/2014 18:46 | #


Au temps pour moi, faut la télécharger depuis mon commentaire la page précédente
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Eltoredo Hors ligne Modérateur Points: 4301 Défis: 35 Message

Citer : Posté le 14/12/2014 18:46 | #


Thanks, c'est bien la version finale dans ton com ?
La procrastination est une vertu. (voir ma description pour comprendre mon raisonnement)
Dark storm Hors ligne Labélisateur Points: 11634 Défis: 176 Message

Citer : Posté le 14/12/2014 18:48 | #


La V2.2, oui. Ce n'est peu être pas la finale, mais c'est la dernière
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Eltoredo Hors ligne Modérateur Points: 4301 Défis: 35 Message

Citer : Posté le 14/12/2014 18:48 | #


Ok, si ça me permet de choisir un pseudo et des minuscules, nickel
La procrastination est une vertu. (voir ma description pour comprendre mon raisonnement)
-florian66- Hors ligne Ancien rédacteur Points: 2383 Défis: 20 Message

Citer : Posté le 14/12/2014 19:01 | #


Faudra que tu l'as mette en snippets

Tu as regardé d'où venaient mes bugs ?
In Arch, I trust ! And you ?
Xavier59 Hors ligne Membre de CreativeCalc Points: 1337 Défis: 12 Message

Citer : Posté le 21/12/2014 12:15 | #


Idée d'amélioration : Saisie dans une fenêtre PopUp
1337
Dark storm Hors ligne Labélisateur Points: 11634 Défis: 176 Message

Citer : Posté le 21/12/2014 15:08 | #


Nope : les graphismes, c'est à vous de les faire avant d'appeler la fonction. Et puis une pop-up c'est pas compliqué à faire
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Lephenixnoir Hors ligne Administrateur Points: 24228 Défis: 170 Message

Citer : Posté le 21/12/2014 15:13 | #


PopUpWin(1);


Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Purobaz Hors ligne Membre d'honneur Points: 2690 Défis: 110 Message

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


Précise si la lib est compatible SH4.
I'll be back !
pour plus de fun
mes programmes fun
de technique
mes projets
et de Swag
les projets que je soutiens
Theprog Hors ligne Membre Points: 1447 Défis: 20 Message

Citer : Posté le 18/01/2015 20:29 | #


C'est vraiment bien comme lib, j'avais pas eu le temps de la tester avant.
Le dernier truc qui manquerait ca serait de mettre en PrintMini parce qu'en Print c'est un peu gros pour certains trucs mais apres c'est un detail
Xavier59 Hors ligne Membre de CreativeCalc Points: 1337 Défis: 12 Message

Citer : Posté le 30/01/2015 21:48 | #


J'ai toujours pas mal de problème avec cette lib qui me serait pourtant utile.
As-tu travaillé dessus ?
1337
Nemhardy Hors ligne Grand maître des Traits d'Esprit Points: 1242 Défis: 54 Message

Citer : Posté le 14/02/2015 23:36 | #


@Dark Storm : au passage, t'as pas eu de soucis de compatibilité avec les OS >= 2.00 ? Car perso, quand j'ai bossé sur la gestion du curseur dans Eigenmath, j'ai utilisé les même syscalls que toi, dont deux notamment signalés dans la doc de SimLo (chez toi ce sont EI_Cursor_SetFlashStyle et EI_Cursor_SetFlashMode (0x0139 et 0x013A)) comme à ne pas utiliser avec les OS >= 2.00, perso voyant que tu les utilisais je me suis dit que ça devait pas trop gêner, donc je les ai aussi utilisé, sur l'émulateur (donc OS ~1.x) pas de soucis, mais sur les OS plus récent, le comportement du curseur devenait parfois juste n'importe quoi… Donc, j'ai fait comme préconisé par la doc (ici : http://media.taricorp.net/prizm/simon_chm/fx_legacy_Cursor.HTM ) et j'ai utilisé le syscall 0x811 au lieu des 2 autres plus haut, et les problèmes ont disparu…
Même si j'ai rien vu passer par rapport à d'éventuels problèmes, c'est juste pour te prévenir que si jamais tu as des soucis étranges avec les curseurs à moment donné, ça doit pouvoir venir de là ;).
Xavier59 Hors ligne Membre de CreativeCalc Points: 1337 Défis: 12 Message

Citer : Posté le 14/02/2015 23:38 | #


C'est tout pile les soucis que j'ai quand j'utile EI.
1337
Dark storm Hors ligne Labélisateur Points: 11634 Défis: 176 Message

Citer : Posté le 14/02/2015 23:38 | #


Ah, c'est donc ça
Ben du coup ça va me permettre de corriger deux trois bugs de plus

Ajouté le 14/02/2015 à 23:39 :
Merci pour l'info en tout cas.
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 84 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