1

J'ai quelques petits problèmes: j'aimerais chercher un fichier dans la calculatrice et l'associer à un pointeur f.
J'ai essayé ce bout de code pour arriver à mes fins mais il ne marche pas.
Il doit y avoir plein de fautes car je ne comprends pas tout au différentes formes de variables (hsym sym_entry...).
Si quelqu'un pouvait m'expliquer clairemment ce qui ne va pas et pourquoi, ça m'arrengerait bien.

//Je décalre les variables (un pointeur de fichier f une variable sym_entry r qui contient un répertoire et une cdc)

FILE *f;
SYM_ENTRY *r;
char rc[10];


FolderGetCur(rc); //Je garde le répertoire courant pour pouvoir le remmettre
r=SymFindFirst(NULL,0); //Je met le premier répertoire dans la variable r
FolderCur(r,FALSE); //Je le met en répertoire courant pour travailler dedans;
f=fopen("notes","r") //Je regarde si le fichier notes se trouve dans ce répertoire
if (f==NULL) //Si ce n'est pas le cas:
{
for(;wink
{
r=SymFindNext(); //Je cherche dans les répertoire suivants
FolderCur(r,FALSE)
f=fopen("notes","r")
if (f!=NULL) break; //Si j'ai trouvé le fichier, je m'en vais
if (r==NULL) goto pdfn; //Si je ne le trouve pas et qu'il n'y aplus de répertoires je m'en vais
}

//
code...
//

FoldrCur($(rc),FALSE); //Je remet l'ancien répertoire courant.
sick
Vive le coding gba.
www.codegba.fr.st

2

confussmiletsss
Qui c'est qui peut m'aider???
confussmiletsss
Vive le coding gba.
www.codegba.fr.st

3

Pourquoi veux-tu faire une telle chose ??

Un truc qui ne me paraît pas bien:
r=SymFindNext(); //Je cherche dans les répertoire suivants
Ce n'est pas dans les répertoires suivants, c'est le symbole suivant dans la VAT, c'est pas pareil.
C'est dommage, je n'ai pas fini de documenter cerains trucs de la VAT qui pourraient peut-être t'aider, je ne sais pas...
Un truc: vérifie si dans le SYM_ENTRY que te renvoie SymFindNext, il n'y a pas le flag folder qui indique un répertoire...
(fais comme ceci: if (r->flags.bits.folder == 1) ... //c'est un folder, sinon c'est un fichier normal.
Ou, ce qui est équivalent, mais en général plus rapide et plus petit: if(r->flags.flags_n & SF_FOLDER) ... // c'est un folder, sinon c'est un fichier normal...

avatar
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Co-admin de TI-Planet.

4

En fait quand je dis je cherche dans le répertoire suivant c'est faux: ce que je veux dire c'est que je met dans r le sym_entry équivalent au repertoire suivant de la vat pour pouvoir ensuite m'en servir. Ce qu'il ya, c'est que foldercur() ne marche pas avec des sym_entry alors je ne sais pas comment faire pour mettre le répertoire suivant de la vat en répertoire courant.
Vive le coding gba.
www.codegba.fr.st

5

Non seulement FolderCur ne marche pas avec des SYM_ENTRY, mais il utilise aussi SymFindFirst, donc SymFindNext ne fonctionne plus par la suite. Utilise plutôt:
FILE *f;
SYM_ENTRY *r;
char folder[9];
char fname[19];

r=SymFindFirst(NULL,0); //Je mets le premier répertoire dans la variable r 
nextfile:
if (!r) goto pdfn; //Si je ne le trouve pas et qu'il n'y a plus de répertoires, je m'en vais 
strncpy(folder,r->name,8); //r->name contient le nom du répertoire, mais le \0 final n'y est que si le 
folder[8]=0; //nom fait moins de 8 lettres, donc on recopie le nom et on rajoute le \0 final
sprintf(fname,"%s\notes",folder); //crée "folder\notes"
f=fopen(fname,"r") //Je regarde si le fichier notes se trouve dans ce répertoire 
if (!f) { //Si ce n'est pas le cas: 
r=SymFindNext(); //Je cherche dans les répertoires suivants 
goto nextfile; //On ne recopie pas le code, on fait un goto à la place.
}
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

6

comment se fait t'il que l'on ne puisse pas accéder au nom du répertoire pointé par le sym_entry en faisant r.name car sym_entry est une structure.
Vive le coding gba.
www.codegba.fr.st

7

sym_entry n'est pas forcement un repertoire. Ca peut etre un fichier.

8

Parce que la fonction SymFindFirst renvoie un pointeur vers une structure SYM_ENTRY, donc pour accéder à un membre d'une structure à partir de son pointeur il faut faire : ptr_struct->membre

9

Exact. r->name équivaut à (*r).name.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

10

PpHd
a écrit : sym_entry n'est pas forcement un repertoire. Ca peut etre un fichier.


Non, si le deuxième paramètre de SymFindFirst vaut 0, ça ne renverra que des répertoires.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité