nickdan a écrit :Pour tes tableaux/liste de strings :
Attend là, y'a un problème... pourquoi vouloir gérer des tableaux de strings "rang 1", "rang 2", "rang 3", ...
J'ai encore plus optimisé. Mes informations initiales :
Code : Tout sélectionner
char *voc3[]={"Tps pause (h)" , "Tps pause (min)" , "Tps pause (s)" , "Nb rangs" ,
"rang 1", "rang 2", "rang 3", "rang 4", "rang 5", "rang 6", "rang 7", "rang 8", "rang 9", "rang 10",
"rang 11", "rang 12", "rang 13", "rang 14", "rang 15", "rang 16", "rang 17", "rang 18", "rang 19", "rang 20",
"nom1ok" , "nom7" , "nom8" , "nom9" , "nom10" , "nom11" };
Et j'ai ceci maintenant :
Code : Tout sélectionner
char *voc3[]={"Tps pause (h)" , "Tps pause (min)" , "Tps pause (s)" , "Nb rangs" , "nom1ok" , "nom7" , "nom8" , "nom9" , "nom10" , "nom11" };
Et pour afficher correctement les mots à partir de "nom1ok", je gère un décalage, suivant le nombre de rangs sélectionnés et affichés...
Merci pour ta réponse concernant le i++, ++i, i = i+1 ... C'est bien ce que j'en avais déduis.
Concernant la mémoire et l'affichage de texte "écrits en durs", j'ai découvert que si je mets par exemple :
(équivalent de Println("texte"); 65 et 25 sont les positions x et y sur l'écran )
Ce texte est écrit en dur dans le programme, puis chargé dans la ram lors de l'execution de celui-ci.
Or il existe une fonciton : F(), qui grosso modo ne va pas stocker le mot à afficher dans la ram.
Il suffit de faire :
u8g.drawStr( 65, 25,
F("texte"
));
J'ai ainsi gagné un peu plus de 110 octets sur 2048 octets ... et pourtant je n'ai pas beaucoup de texte à afficher !