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
Citer : Posté le 08/12/2014 18:47 | #
j'ai un petit problème :
et l'erreur
alors que
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
Ç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 :
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 !
Citer : Posté le 08/12/2014 19:04 | #
bien dit lephé merci
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
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 :
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
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
Citer : Posté le 09/12/2014 21:17 | #
Bizarre, je regarde ça tout de suite
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
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
Citer : Posté le 14/12/2014 18:46 | #
Thanks, c'est bien la version finale dans ton com ?
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
Citer : Posté le 14/12/2014 18:48 | #
Ok, si ça me permet de choisir un pseudo et des minuscules, nickel
Citer : Posté le 14/12/2014 19:01 | #
Faudra que tu l'as mette en snippets
Tu as regardé d'où venaient mes bugs ?
Citer : Posté le 21/12/2014 12:15 | #
Idée d'amélioration : Saisie dans une fenêtre PopUp
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
Citer : Posté le 21/12/2014 15:13 | #
Citer : Posté le 21/12/2014 22:22 | #
Précise si la lib est compatible SH4.
Escape prison
Bloxorz
Free wheel
QR code
Nombre en or
RayCasting Engine
Mario Party
Zelda
et Planète Casio
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
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 ?
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à ;).
Citer : Posté le 14/02/2015 23:38 | #
C'est tout pile les soucis que j'ai quand j'utile EI.
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.