1

Je voudrais savoir comment changer le repertoire courant, quand le nouveau nom n'est pas une constante.
Car quand on utilise "FolderCur " le nom du rep doit etre une constante.

2

Erreur je me suis trompé de rubrique grin
[edit]Edité par Shinjuku2 le 19-02-2002 à 18:58:29[/edit]
Epitech - Ecole pour l'informatique et les nouvelles technologies

Shinjuku@ifrance.com
MSN : Shinjuku83@hotmail.com

3

unsigned char *str="folder";
FolderCur (str,TRUE);

"const" ne veut pas dire que la chaîne doit être une constante.

4

Attention, il me semble que la chaîne doit commencer par un zéro, et qu'il faut passer un pointeur sur la fin de cette chaîne.
avatar
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.

5

ça veux dire quoi alors ?

6

Qu'il faut vérifier dans la doc de TIGCC.

Et je viens de la faire, et c'est bien le cas : tu ne peux pas passer une chaîne normale.
avatar
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.

7

nan en fait je demandais ce que const voulais dire.

8

de plus je sais qu'il ne faut pas passer une chaine normale, j'ai essaiyé avec un truc comme ça mais ça n'a pas marché:

char string_temp[20]="";


hsym = SymFind (strcpy (string_temp + 1, "jeux") + strlen ("jeux"));

FolderGetCur(hsym);

9

Simplement pour te signaler que la fonction ne modifieras pas la châine.
Sinon, quand tu implémentes toi-même une fonction avec des paramètres déclarés avec const, le compilo t'avertit (voir s'arrête, j'ai jamais essayé) si tu tentes de modifier les paramètres.
avatar
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.

10

Attention, il me semble que la chaîne doit commencer par un zéro, et qu'il faut passer un pointeur sur la fin de cette chaîne
Ah oui, désolé, j'avais oublié ça.

11

Pour passer un pointeur sur la fin de la chaine il faut faire un truc comme ça ?

sprintf(buffer,"%c%s",'',"jeux")
FolderCur(buffer[5],TRUE);

12

Presque wink

Pour plus de souplesse n'utilise pas de constante (5) mais fait appel à la fonction strlen. Et buffer[5] c'est pas bon wink
[edit]Edité par Thibaut le 20-02-2002 à 12:39:56[/edit]
avatar
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.

13

buffer[0]= 0; strcpy(&buffer[1], [i]nom_du_fichier[/i]);
FolderCur(&buffer[strlen(buffer)], TRUE);

[edit]Edité par Thibaut le 20-02-2002 à 12:44:52[/edit]
avatar
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.

14

ça marche posad

15

Arf oui pardon wink Je viens de comprendre que c'est à cause du zéro de début.
buffer[0]= 0; strcpy(&buffer[1], nom_du_fichier);
FolderCur(&buffer[strlen(buffer+1)+1], TRUE);
avatar
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.

16

Youpi, youpi, youpi ça marche maintenantrotflrotfl

17

M'enfin c'est pas ce qu'il y a de plus élégant wink
En ASM se serait bcp + rapide.
avatar
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.

18

>En ASM se serait bcp + rapide.
tu peu me dire comment on fait en ASM?
Des joueurs de brood war ici? /w TIman[sL] [br] L’abondance de paroles inutiles est un symptôme certain d’infériorité mentale.

19

Bien sûr, deux minutes je te code ça wink
avatar
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.

20

Voici le code, c'est beaucoup plus rapide smile
Tu as juste à l'insérer dans ton fichier source C, avec le reste de ton programme, c'est tout !
Je n'y passe pas de paramètre nonSys défini parceque la documentation de TIGCC est on ne peut moins clair quant à son sujet roll

short ChangerRepertoireActif(char* Nom);
asm("
ChangerRepertoireActif:
 subq.l  #2,%a7
 move.l  6(%a7),%a0
 move.b  -(%a0),(%a7)
 clr.b   (%a0)+
ChangerRepertoireActif_loop:
 tst.b   (%a0)+
 bne.s   ChangerRepertoireActif_loop
 pea     -1(%a0)
 move.l  (0xC8).w,%a0
 move.l  0x194(%a0),%a0   /* FolderCur */
 jsr     (%a0)
 addq.l  #4,%a7
 move.l  6(%a7),%a0
 move.b  (%a7),-(%a0)
 addq.l  #2,%a7
 rts
 .word   0
")


Le .word de fin est très important ; sans lui la calto peut planter dans certains cas rares mais précis à cause du pipeline de merde rage (wink)
[edit]Edité par Thibaut le 20-02-2002 à 21:14:01[/edit]
avatar
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.

21

Mais c'est plus propre de ne pas démolir l'octet qui précède la chaîne de caractères donnée (même en le sauvegardant). Par exemple, qui te dit qu'il ne se trouve pas en ROM (dans un fichier externe)? La méthode du strcpy est beaucoup plus propre. (C'est aussi une objection à faire à tes routines de fichier que tu veux nous faire utiliser.) Sauf que pour être vraiment sûrs, il faudrait d'abord un strlen pour vérifier si le nom n'est pas trop gros pour le buffer. (Je me demande si je ne devrais aussi rajouter ça dans nos routines de fichier. Pour l'instant, il n'y a pas de vérification de la longueur de la chaîne.)
[edit]Edité par Kevin Kofler le 20-02-2002 à 20:59:57[/edit]
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é

22

Avec Kevin, lenteur RULLEEZZZZZZZ roll
Pour l'histoire de la chaîne en ROM, ok (mais ça m'étonnerait beaucoup que LhA lise le nom du répertoire depuis un fichier externe).
Mais pour le reste, tu ne changeras pas toi, toujours à préférer les choses lentes et grosses pour avoir une sécurité maximale... Programme en Basic alors ! il est presque impossible de planter la calto rage

>> que tu veux nous faire utiliser.
Tu serais gentil de tourner ta phrase autrement !!! Il me semble que c'est toi qui veux les utiliser doom

Sinon, tu ne saurais pas nous expliquer l'utilité du fameux paramètre nonSys ?

[edit]Edité par Thibaut le 20-02-2002 à 21:49:18[/edit]
avatar
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.

23

>Sinon, tu ne saurais pas nous expliquer l'utilité du fameux paramètre nonSys ?

Je n'en sais pas plus que ce qui est écrit dans la documentation de TIGCC.
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é

24

Je suis d'accord avec Kevin. C'est sale comme methode. Surtout que ca n'a pas besoin d'etre rapide.

25

Et puis, Thibaut, si tu avais lu la documentation de TIGCC correctement, tu saurais que selon TI (je suppose que Zeljko a lu ça dans la documentation du SDK), il faut toujours passer TRUE pour nonSys pour éviter des ennuis. Et puis, il vaut toujours mieux passer un paramètre bien défini (même si c'est n'importe lequel) plutôt que de ne rien passer et laisser le hasard décider. Mais apparemment Thibaut n'a jamais appris à programmer proprement.
[edit]Edité par Kevin Kofler le 21-02-2002 à 09:09:35[/edit]
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é

26

Et on se tape dessus de tous les côtés...fourollfou

Et tant qu'à faire, je suis d'accord avec les utilisateurs des routines TIOS correctement utilisées, parce qu'on a pas de chance...
Site : http://www.phareaway.com/
Membre du groupe Phare Away et webmaster du site

27

Kevin, je suis désolé de ne pas être un gosse chanceux comme toi, de ne pas être tri(quadri ?)lingue.
Avec mon modeste niveau d'anglais je n'ai vraiment pas compris quelle valeur passer au second paramètre de FolderCur, parceque quand je lis ceci : "nonSys is a flag which normally need to be FALSE", puis quelques lignes plus bas : "TI says that it should be always TRUE", je ne sais pas quoi penser.
Voilà, je pense que plutôt que d'essayer de me casser avec "Et puis, Thibaut, si tu avais lu la documentation de TIGCC correctement", il aurait été plus judicieux de m'expliquer en français ce que dit la documentation, puisqu'avec la troisième phrase du post 20 j'ai montré clairement que je ne la comprend pas.

Pour l'histoire de l'octet écrasé puis restauré : je ne trouve pas ça sale. La seule possibilité de faire planter la routine serait de lire le nom du répertoire depuis un fichier en ROM... C'est pas tous les jours qu'on fait ça, probablement encore moins pour des débutants comme LhA.
avatar
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.

28

Ce que Zeljko dit, c'est:

"nonSys est un flag qui normalement doit être FALSE (je pensais ça, mais TI dit que le flag doit toujours être TRUE pour éviter des ennuis donc il vaut mieux faire ce qu'ils disent)."

Il a gardé l'ancienne phrase qu'il avait écrite, mais l'a corrigée à côté.
[edit]Edité par Kevin Kofler le 23-02-2002 à 15:50:42[/edit]
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é

29

Zeljko a écrit : When it is set to TRUE, FolderCur calls SymFindNext repeatedly until the first non-system variable in this folder is reached
En fait je ne crois pas que ce soit tout à fait ça. Il y a bien un boucle avec un SymfindNext, puis tout un bidouillage avec les variables de l'AMS, mais la boucle continue même après avoir trouvée une variable "non-system", et elle continue jusqu'à ce qu'elle est scannée toutes les variables de la calc. Mais les variables systèmes échappent à ce test, la boucle passant à la prochaine variable. Enfin ça, on s'en fout un peu.

La doc du SDK dit que les graphes risquent de devenir si on met FALSE pour nonSys, et c'est justement pour ça qu'il faut mettre TRUE. Imaginons par ex. que le dossier courant est YOP, qu'il y a dans ce dossier la variable "var" qui est égale à 5, et que y1(x)=var*x. Imaginons aussi qu'il y ait aussi dans le dossier ERF la variable "var" qui est égale cette fois à 2, et que le graphe de y1 soit tracé. Si on met comme dossier courant le dossier ERF avec TRUE pour nonSys, et si on regarde l'écran Graph, y1(x) sera retracé, puisque la variable "var" utilisée pour y1(x) n'est plus la même, c'est maintenant celle du dossier ERF qu'il faut utiliser. Si on met FALSE pour nonSys, le graphe ne sera pas redessinné, et il devient alors faux.
Tout ça aussi on s'en fout un peu, en tout cas il faut mettre absolument TRUE et pas se poser de questions.

30

Merci les gars wink
avatar
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.