Closed iodeo closed 1 year ago
Mince, je n'avais pas vu ce problème. Par contre ton correctif crée un autre problème chez moi, si j'appuie par exemple sur é, puis sur la touche CORRECTION, alors la touche ENVOI ne fonctionne plus.
Ay.. j'ai du me gourrer qq part Ça avait l'air de fonctionner sur ma version de test local Je vérifie demain
Le jeu. 2 mars 2023 à 23:27, 3615 @.***> a écrit :
Mince, je n'avais pas vu ce problème. Par contre ton correctif crée un autre problème chez moi, si j'appuie par exemple sur é, puis sur la touche CORRECTION, alors la touche ENVOI ne fonctionne plus.
— Reply to this email directly, view it on GitHub https://github.com/eserandour/Minitel1B_Hard/pull/12#issuecomment-1452643572, or unsubscribe https://github.com/notifications/unsubscribe-auth/AG2KQHL5D4GSZGFOSTC45GDW2ENGNANCNFSM6AAAAAAVN5GC4I . You are receiving this because you authored the thread.Message ID: @.***>
Je n'arrive pas à reproduire ton bug L'esp32 utilise la même classe String que le Uno apparemment Je vois pas d'où ça peut venir :/
Je pense avoir résolu le problème en ajoutant une nouvelle fonction : int getNbBytes(unsigned long code) à utiliser en association avec String getString(unsigned long code) afin de déterminer le nombre d'octets utilisés pour un caractère codé en UTF-8. J'utilise également un cache pour enregistrer la taille en octets des caractères spéciaux au fur et à mesure qu'on en ajoute ou en enlève. L'exemple a été mis à jour et permet de visualiser ce qui se passe au niveau des variables.
J'ai également mis en commentaires à la fin du programme TestCaracteresSpeciaux.ino une version qui n'utilise pas de cache et qui s'inspire de ta proposition.
La version sans cache est la meilleure (plus performante). Je l'ai mise en version par défaut.
Nouvelle mise à jour qui tient compte des différences entre l'ATmega 1284P et l'ESP32.
Lors d'un appui sur la touche CORRECTION, le dernier caractère du texte est sensé être supprimé Or pour supprimer un caractère spécial dans un objet String, il faut retirer plusieurs octets ! Cela se voit par l'apparition d'un caractère ⸮ dans le moniteur série
Je commence par un test pour détecter s'il s'agit d'un caractère spécial Le cas échéant je cherche l'index correspondant à son premier octet Puis je supprime l'ensemble