Ascur Le 13/11/2002 à 16:30Edité par Ascur le 13/11/2002 à 16:51 Comment on fé pour cacher toutes ses var avec le C ??
gé fé ca mé ca marche pa :
ESI argtpr;
SYM_ENTRY *SymPtr = SymFindFirst(NULL,4);
while(SymPtr)
{
push_ANSI_string(SymPtr->name);
argtpr = top_estack;
DerefSym(SymFindHome($(GetFloatArg(argtpr))))->flags.bits.hidden=1;
SYM_ENTRY *SymPtr2 = SymFindFirst(GetSymstrArg(argtpr), 1);
while(SymPtr2)
{
push_ANSI_string(SymPtr2->name);
argtpr = top_estack;
DerefSym(SymFind($(GetFloatArg(argtpr))))->flags.bits.hidden=1;
SymPtr2 = SymFindNext();
}
SymPtr = SymFindNext();
}
Merci
Il faut savoir que le fait de cacher les variables est un gros abus du flag hidden (in_use). Ce flag marque qu'AMS est en train d'utiliser le fichier, et qu'il est donc en principe inaccessible à quoi que ce soit d'autre. Et utiliser ce flag pour cacher des variables peut créer des problèmes...
Ascur Le 13/11/2002 à 17:06 Merci mé pkoi kan jessaye sur vti ca marche pa??
Ascur Le 13/11/2002 à 17:08 Cé juste pour savoir kommen on fé pke si on px far ca on px archiver, desarchiver, decacher...
Merci pour l'info
Je suppose que tu as transféré des fichiers à ta VTI ?
Ascur Le 13/11/2002 à 17:48 Au fait, kantecek il fau le definir symptr2???
Merci
Zeph Le 13/11/2002 à 21:03Edité par Boo le 14/11/2002 à 16:42 Idem, j'écrit ça sans vérifier, donc c'est fort probable que ça marche pas mais essaye tjrs :
void _main(void) {
SYM_ENTRY *sym;
ESI argument;
char *ptr;
argument=top_estack;
if(GetArgType(argument)!=STR_TAG) return;
ptr=(char*)GetStrnArg(argument);
sym=SymFindPtr(SYMSTR(ptr),0);
sym->flags.bits.hidden=1-(sym->flags.bits.hidden);
}
Edit : Si ça marche, tu le lance avec comme argument un nom du fichier, et ça alterne son état (ça le cache si il était visible, et vice-versa).

All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez
par ici :)
Link Le 13/11/2002 à 21:14 C'est vrai qu'avec les flags on peut tout juste essayer de faire croire à AMS qu'un fichier est archivé, ce qui devrait avoir des conséquences spectaculaires pour toute tentative d'accès à cette variable

Maintenant j'ai la flemme de garder une signature à jour sur ce site. Je n'ai même plus ma chaîne Exec sous la main.
Ascur Le 14/11/2002 à 18:28
void _main(void) {
SYM_ENTRY *sym;
ESI argument;
char *ptr;
argument=top_estack;
if(GetArgType(argument)!=STR_TAG) return;
ptr=(char*)GetStrnArg(argument);
sym=SymFindPtr(SYMSTR(ptr),0);
sym->flags.bits.hidden=1-(sym->flags.bits.hidden);
}
--> ça marche pas... le compilateur dit "undefined reference to 'SYMSTR'
Zeph Le 14/11/2002 à 18:30 Sois sûr que tu as la dernière version de TIGCC...

All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez
par ici :)
Tu peux utiliser flags_n et SF_HIDDEN au lieu de flags.bits.hidden.
Et en effet, quelle version de TIGCC utilises-tu ?
Ascur Le 14/11/2002 à 18:42 J'ai téléchargé la derniere version de TIGCC (0.93) et ça me fait la même chose...
Zeph Le 14/11/2002 à 18:46 C'est pas du tout la dernière version, et c'est normal que ça marche pas avec...
Prends la 0.94 b19 ou b20 je sais plus

All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez
par ici :)
Ascur Le 14/11/2002 à 18:54 Maintenant ca marche
Effectivement la derniere c'est la 0.94b
Merci bcp
pour archiver et desarchiver, tu passe par EM_MoveFromArchivemachinchose et un qui ressemble ...
Ascur Le 15/11/2002 à 13:35 La fonction
void _main(void) {
SYM_ENTRY *sym;
ESI argument;
char *ptr;
argument=top_estack;
if(GetArgType(argument)!=STR_TAG) return;
ptr=(char*)GetStrnArg(argument);
sym=SymFindPtr(SYMSTR(ptr),0);
sym->flags.bits.hidden=1-(sym->flags.bits.hidden);
}
ne permet pas de cacher les repertoire, comment faut-il s'y prendre?
Je n'y connais rien en cachage de répertoire, mais je ne comprends pas pourquoi tu mets 1-(sym->flags.bits.hidden); et non pas 1 tout simplement ?
C'est l'équivalent de !sym->flags.bits.hidden, en moins optimisé.

Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 :
www.ti-fr.com.
Quelques idées personnelles
ici.
ah ok, je pensais qu'il voulait seulement cacher le fichier. Pas cacher ou décacher selon l'état dans lequel il était précédemment.
Ouaip. C'est une convention.
Perso, j'aurais trouvé plus logique que ce soit -1.

Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 :
www.ti-fr.com.
Quelques idées personnelles
ici.