affichage multiple de texte...

spheris

Senior Member
Bonjour,
Peut-on simplifier ce code :

Code:
select case lemenu
case 1
	serout C.0, N4800, (254,128,"V  : Menu princ.   ",254,192,"+/-: Suivant    ")
case 2
	serout C.0, N4800, (254,128,"V  : Menu temp.",254,192,"+/-: Suivant    ")
case 3
	serout C.0, N4800, (254,128,"V  : Menu hygro. ",254,192,"+/-: Suivant    ")
case 4
	serout C.0, N4800, (254,128,"V  : Impression ",254,192,"+/-: Suivant    ")
case 10
	serout C.0, N4800, (254,128,"V  : Menu Options "  254,192,"cellule.: ", #cellul, "        ")
case 11
	gosub menu11
case 21
	serout C.0, N4800, (254,128,"Temps analyse: ",254,192, "  ",#purge, " secondes  ")
case 79
	serout C.0, N4800, (254,128,"--menu systeme--",254,192, "   Code: ",#code, "         ")
end select
La chaine de caracères entre 254,128 et ,254,192 changeant, n'est-il pas possible de stocker cette chaine quelque part lors de l'appuie sur les boutons , puis de l'appeler à la demande en fonction de la variable 'lemenu' genre :


Code:
'si appui sur bouton par exemple :
if pinB.1 = 0 and pinB.2 = 0   then
	b10 = "Menu option :"
	gosub envoilcd
endif

envoilcd:
serout C.0, N4800, (254,128,b10,254,192,"cellule.: ", #cellul, "        ")
return
sauf que stocker la chaine dans b10 ne marche pas.
Merci pour vos réponses.
;)
 

PieM

Senior Member
Bonjour,
Il est possible de simplifier l'écriture, mais ça ne changera rien en ce qui concerne le code lui même. (même nb d'octets)
Utiliser la directive #define en substitution

Code:
#define suivant 254,192,"+/-: Suivant    "
en tête de programme, va permettre d'écrire:
Code:
serout C.0, N4800, (254,128,"test: ",suivant)
et d'avoir sur l'afficheur:
test:
+/-: Suivant

L
e préprocesseur va remplacer suivant par 254,192,"+/-: Suivant " lors du téléchargement.
 

spheris

Senior Member
Merci pour votre réponse.
Par contre il ne sera pas possible de redéfinir le contenu de 'suivant' en cours de programme?
 

PieM

Senior Member
Merci pour votre réponse.
Par contre il ne sera pas possible de redéfinir le contenu de 'suivant' en cours de programme?
Ben non!
je ne vois pas trop le but recherché, car écrire quelquepart que xxxx c'est en fait yyyy ne fait rien économiser si cette substitution n'est réalisée qu'une fois.
Un sous menu programme est écrit une fois.

Si vous voulez, vous faites une macro qui va contenir le menu et appelée par un argument lemenu.

et le select case devient

macromenu (lemenu)

mais select case sera dans la macro!!

C'est shadokien !
 

spheris

Senior Member
J'ai 12 menus et j'aurais pu avoir une seule commande pour piloter l'écran comme ceci:


serout C.0, N4800, (montexte)

Je voulais juste précharger le texte dans une variable montexte et lancer la commande à l'afficheur.
Cela m'evite d'écrire 12 fois la meme commande à l'afficheur.

Visiblement ce n'est pas possible.

En tout cas merci pour la solution #define
et merci pour votre aide précieuse et votre réactivité.

juste une petite autre question:
Comment charger une variable de type string?
b2 = "toto" ne fonctionne pas et je ne comprends pas la définition d'un type string dans la doc.
 

PieM

Senior Member
J'ai 12 menus et j'aurais pu avoir une seule commande pour piloter l'écran comme ceci:


serout C.0, N4800, (montexte)

Je voulais juste précharger le texte dans une variable montexte et lancer la commande à l'afficheur.
Cela m'evite d'écrire 12 fois la meme commande à l'afficheur.

Visiblement ce n'est pas possible.

En tout cas merci pour la solution #define
et merci pour votre aide précieuse et votre réactivité.

juste une petite autre question:
Comment charger une variable de type string?
b2 = "toto" ne fonctionne pas et je ne comprends pas la définition d'un type string dans la doc.
Je voulais juste précharger le texte dans une variable montexte et lancer la commande à l'afficheur.
ben oui, et la variable comment vous la sélectionnez ? avec un sect case ?
J'ai l'impression que ça se mord la queue tout ça ou je n'ai pas compris la finalité!

la variable string n'existe pas dans le basic picaxe

#define montexte1 (254,128,"V : Menu princ. ",254,192,"+/-: Suivant ")
#define montexte2 (254,128,"V : Menu temp. ",254,192,"+/-: Suivant ")
permet d'ecrire

serout C.0, N4800, (montexte1)
serout C.0, N4800, (montexte2)

on peut même faire:
#define montexte1 serout C.0, N4800, (254,128,"V : Menu princ. ",254,192,"+/-: Suivant ")
#define montexte2 serout C.0, N4800, (254,128,"V : Menu temp. ",254,192,"+/-: Suivant ")
et écrire :

montexte1
montexte2

Encore une fois, il faut écrire quelque part les 12 menus, que ce soit en define ou dans un sous programme je ne vois pas l'économie.
 
Last edited:
Top