Zeph Le 30/03/2002 à 00:04 Vala...Après m'être interessé à la création de variables TiOS, j'aimerais savoir comment on fait pour ouvrir une variable TiOS et lire son contenu...
Bon je c ouvrir une variable, et je voudrais lire des EXPR et des STR. Mais la structure de ces variables est tordue, j'ai rien comprit au fonctionnement (des inverses, des groupes d'hexa, des je c plus quoi...)
- Y'a-t-il des fonctions dans TIGCC qui peuvent "traduire" des variables EXPR et STR en int et char ?
- Si non, comment faire ?

All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez
par ici :)
SYM_ENTRY *sym_entry=SymFindPtr($(varname));
if (!sym_entry) exit(960);
HANDLE hVar=sym_entry->handle;
if(!hVar) exit(960);
ESI var_esi=HToESI(hVar);
if ((GetArgType(var_esi)!=POSINT_TAG)&&(GetArgType(var_esi)!=NEGINT_TAG)) exit(210);
int integer=GetIntArg(var_esi);
if (GetArgType(var_esi)==NEGINT_TAG) integer=-integer;
SYM_ENTRY *sym_entry=SymFindPtr($(varname));
if (!sym_entry) exit(960);
HANDLE hVar=sym_entry->handle;
if(!hVar) exit(960);
ESI var_esi=HToESI(hVar);
if (GetArgType(var_esi)!=STR_TAG) exit(210);
char *string=GetStrnArg(var_esi);
[edit]Edité par Kevin Kofler le 30-03-2002 à 00:16:14[/edit]
D'ailleurs, je n'ai pas choisi les codes d'erreur au hasard:
* 960 = "Undefined variable"
* 210 = "Data type"
Zeph Le 30/03/2002 à 15:57 Ah oui au fait, on peut créer des variables avec push_longint et push_ANSI_string comme ça ?

All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez
par ici :)
Zeph Le 30/03/2002 à 16:28 ah ouais... mais je préfere éviter ces fonctions et utiliser vat.h...

All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez
par ici :)
Tu fais comme j'avais fait dans la routine que je t'avais postée il y avait quelque temps: tu mets les données sur la pile d'expressions avec push_longint et compagnie, tu alloues un bloc avec HeapAlloc (pas avec malloc), tu recopies les données de la pile d'expressions vers ce bloc avec memcpy et tu assignes le handle du bloc à l'entrée approprié de la structure SYM_ENTRY retournée par SymAdd.
Zeph Le 30/03/2002 à 19:47 Arf, tant que j'y suis :
char *sub_defaut(int var_typ,char *var_var1,char *var_var2)
{
SYM_ENTRY *var_sym=SymFindPtr(var_typ==1?var_var1:var_var2,0);
if(peek(HToESI(var_sym->handle))==0x1F) // Num
{
if(var_typ==1) return (char*)"";
else if(var_typ>=2) return tios_liste(var_var1,tios_entier(var_var2));
}
else if(peek(HToESI(var_sym->handle))==0x2D) // Chaine
{
if(var_typ==1) return tios_chaine(var_var1);
else if(var_typ==2) return tios_liste(var_var1,1);
else if(var_typ==3) return tios_chaine(var_var2);
}
else // Autre
{
if(var_typ==1) return (char*)"";
else if(var_typ>=2) return tios_liste(var_var1,1);
}
return NULL;
}
A marche pas, biscotte var_var1 fonctionne, mais pas var_var2... Pourtant elles sont toutes les 2 définies de la même manière dans le programme... Voyez vous une erreur évidente ?

All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez
par ici :)