Dans ce chapitre, nous allons voir comment créer des  programmes qui prennent une valeur (ou plutôt, une chaîne de caractères dans notre exemple) en argument.

 

I:\ Les fonctions nouvelles :

    Les arguments qui sont donnés à un programme passent sur le sommet de l'expression stack. (Je le laisserai en anglais, car c'est plus correspondant aux instructions qui s'y rapportent que "pile d'expression" !). Nous abrégerons d'ailleurs ceci par le terme Stack.
    Le sommet du Stack, c'est-à-dire la dernière information qui y a été enregistrée est définie par la variable générale top_estack. Donc, pour récupérer ce qui a été mis en argument du programme, il faudra utiliser :
        ESI argptr;
        argptr = top_estack;
    La variable argptr est de type ESI, ce qui signifie "Expression Stack Index". En fait, il s'agit d'un pointeur vers l'expression stack (plus ou moins !).

    Le type d'argument qui a été passé au programme est possible à retrouver grâce à l'instruction 
        GetArgType(argptr);
    Cette fonction renvoie une valeur de type short. Il faut donc mettre :
        short argtype=0;
        argtype = GetArgtype(argptr);
    La valeur renvoyée est un "tag". Pour plus d'informations, allez voir la documentation de TIGCC. (Pour accéder à ce passage, cherchez par exemple STR_TAG).

    Si on sait que l'argument qui a été passé au programme est une chaîne de caractères (ce qu'on peut vérifier avec la fonction précédente !), on peut extraire cette chaîne de caractères, afin, par exemple, de la réécrire sur l'écran. Pour cela, on utilise la fonction :
        GetStrnArg(argptr);

    Voilà, nous avons fini d'expliquer les nouvelles fonctions. Nous pouvons donc à présent étudier le codes source du programme lui-même.

 

II:\ Le code source du programme :

#define OPTIMIZE_ROM_CALLS 
#define SAVE_SCREEN 
#include <tigcclib.h> 

short
_ti92plus, _ti89; 

void _main(void)
{
   ESI argptr;
   short argtype = 0;
   argptr = top_estack;
   argtype = GetArgType(argptr);
   ClrScr();
   if (argtype == STR_TAG)
   DrawStrXY (0, 30, GetStrnArg(argptr), A_NORMAL);
   ngetchx();
}

Chapitre VIII


Copyright Squale92 & Verstand. Logo et sigle TCI® réservés. Développé pour MS Internet Explorer 5.0 en 1024x768 pixels. Page modifiée le