​ ​ ​ ​ affichage multiple de texte...
Results 1 to 6 of 6

Thread: affichage multiple de texte...

  1. #1
    Senior Member
    Join Date
    Jan 2012
    Location
    Somewhere in France
    Posts
    138

    Default affichage multiple de texte...

    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.

  2. #2
    Senior Member
    Join Date
    Jan 2010
    Location
    34 France
    Posts
    3,825

    Default

    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.
    S'il n'y a pas de solution, c'est qu'il n'y a pas de problème . (Les Shadoks)

  3. #3
    Senior Member
    Join Date
    Jan 2012
    Location
    Somewhere in France
    Posts
    138

    Default

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

  4. #4
    Senior Member
    Join Date
    Jan 2010
    Location
    34 France
    Posts
    3,825

    Default

    Quote Originally Posted by spheris View Post
    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 !
    S'il n'y a pas de solution, c'est qu'il n'y a pas de problème . (Les Shadoks)

  5. #5
    Senior Member
    Join Date
    Jan 2012
    Location
    Somewhere in France
    Posts
    138

    Default

    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.

  6. #6
    Senior Member
    Join Date
    Jan 2010
    Location
    34 France
    Posts
    3,825

    Default

    Quote Originally Posted by spheris View Post
    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 by PieM; 27-04-2017 at 08:52.
    S'il n'y a pas de solution, c'est qu'il n'y a pas de problème . (Les Shadoks)

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •