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();
}
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