1

Décidément depuis que j'essaie d'apprendre le C je poste bcp ici...

Voilà mon problème : Je voudrais que mon prog renvoie une liste (comme flib) à la fin de son execution, mais le '#define return_value var" ne marche pas (je ne suit pas sûr mais c'est peut-être à cause de la récupération des arguments).

Il faut donc qu'a partir d'une liste créée dans le prog en C j'arrive à sortir la même, mais en fichier externe utilisable en Ti-Basic.

J'ai déjà peiné pour créer des fichiers PIC, mais le site de Doors m'a bien aidé en indiquant le format de ce type de variables. Par contre pour les listes je ne sait pas comment faire.

Voilà si qqun passe par là et à 5 min pr répondre... Merci d'avance !
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

2

Regardes les sources de flibsmile
avatar
Membre fondateur de la Ligue Anti-MacIntoc
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Un expert est quelqu'un qui en sait de plus en plus sur de moins en moins
de choses, jusqu'à ce qu'il connaisse absolument tout à propos de rien.

3

bof pas le courage... Cette fonction doit être perdue au milieu de plein d'autres, et je ne saurais pas ou ça commence et ou ça s'arrete sad
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

4

Nan, la structure de flib est bien clair.
Tu regardes à la fin des fonctions comme getfolder, et à la fin de la lib.
avatar
Membre fondateur de la Ligue Anti-MacIntoc
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Un expert est quelqu'un qui en sait de plus en plus sur de moins en moins
de choses, jusqu'à ce qu'il connaisse absolument tout à propos de rien.

5

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

6

Tu regardes le format des listes dans la doc. du SDK de TI.
En gros c'est : END_TAG ; expression n ; ... ; expression 2 ; expression 1 ; LIST_TAG. Ca te donnera la liste {expression 1; expression 2; expression n}.
Tu peux utiliser les fonction de stdio.h comme fopen ou fclose, fgets, fputs, ... elles sont très faciles à utiliser (cf. tutorial ici), mais sont gourmandes en mémoire.

7

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

8

Les fonctions de vat.h sont tout aussi simples. (On alloue le bloc avec HeapAlloc, on écrit tout dans ce bloc, on crée le symbole avec SymAdd, on assigne le handle du bloc au champ prévu pour ça dans la structure SYM_ENTRY et c'est bon.)
Mais RETURN_VALUE fera tout pour toi de toute façon.
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é

9

Bah non il ne marche pas, je ne sait pas pkoi.
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

10

Bon tant que j'y suis, j'ai une autre question :

En basic si on crée une liste de 2 éléments et que l'on fait '1->liste[3]', un 3e élément est créé pour y mettre la valeur.
Y'a-t-il moyen de faire pareil en C ou bien faut-il prévoir à l'avance la longueur de la liste ?

Et si c'est possible, y a-t-il un équivalent de dim(liste) ?
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

11

pour les listes allouées en faisant ça au début du prog :
int ma_liste[X]; // Avec X entier positif
Il n'est pas possible d'augmenter la taille (du moins, il me semble)

SInon, il te fauit allouer dynamiquement ta liste, et, pr l'agarndir, la réallouer :
quelque chose du style (je suis pas sûr pr les prototypes des fonctions) :
int *p_sur_liste = NULL;
// Ton prog...
p_sur_liste = malloc(nombre_elements * sizeof(int)); // Alloue la liste => tu peux à présent l'utiliser.
// suite du prog...
p_sur_liste = realloc(nouveau_nombre_elements * sizeof(int)); // Réalloue ta liste, avec un nouveau nombre d'éléments...
// suite du prog...
// A la fin du prog, il fo penser à libérer l'espace mémoire utilisé par le prog :
free(p_sur_liste); // libère la mémoire de la liste => l'efface !!!
avatar
Tutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall

12

REM: je ne penses pas que tu puisse retourner une liste allouée dynamiquement => il doit falloir se démerder pour la copier sur la pile à un moment ou à un autre...
avatar
Tutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall

13

Donc pour faire + simple je met directement liste[50] ça devrait suffir...
Maintenant je v jeter 1 coup d'oeil sur le tuto de ZdRUbAl qui a l'air bien foutu pour savoir comment créer une liste Ti-Basic.

C'est pratique en fait, y'a des tutos variés sur à peu près tout, et en + ils sont en français grin
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

14

Il ne parle pas de liste, mais seulement des éléments qui composent la liste.
Remarque il suffit juste de rajoutre le LIST_TAG et le END_TAG
> squale92 : en étant plus rigoureux : p_sur_liste = (int*)malloc(nombre_elements*sizeof(int)) // Typecasting rulez smile

15

Heu... Si je comprends bien :
On met le LIST_TAG à un bout, le END_TAG à l'autre, et au milieu on met les éléments...

Alors déjà je ne sait pas si on met le LIST_TAG ) [0] ou à [dimention_de_la_liste+2], et puis ça veut dire que l'on met le premier élément dans [1], le 2eme dans [2], etc ?
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

16

Le mieux si tu veux créer des listes avec les fonctions simples de stdio.h est que tu crées la liste voulue en TI-Basic, ensuite que tu étudies la "structure" hexadécimale obtenue avec un éditeur héxa, puis que tu crée ta liste en conséquence sous TIGCC.
Dans tous les cas (sans compter les checksum), tu commences par END_TAG, puis tu empiles tes expressions de la dernière à la première (structure de pile) puis tu finis avec un LIST_TAG.

17

oué, tu peux mettre un cast si tu veux grin mais ça changera rien au niveau du code, je penses... une adresse fait toujours 4 octets...
mais bon, c vrai que c plus rigoureux grin
avatar
Tutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall

18

Faut être rigoureux smile
Sinon certains compilos génèrent des avertissements smile

19

1 cast ???

Bon sinon quand on met dans une liste ti-basic un nombre ou une chaine ça n'a pas d'importance. Mais en C il ne va pas y avoir de problèmes ? Enfin plus précisément je peux stocker "HelloWorld" dans liste[2] ?
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

20

Dans un tableau en C ...
Une chaine de caractère étant déjà elle-même un talbeau (de dimension 1, une liste comme on dirait en Basic), tu peux donc faire soit un tableau : char tableau_chaines[50][20] // 50 chaines de 20 car. max.
ou plutôt char *tableau[50] et allouer la mémoire pour stocker les chaines de car.

21

mais pour interagir avec le BASIC, c la merde.
avatar
Tutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall

22

Ah merde... Parceque ct mon but premier...

J'explique : je veux aboutir au même résultat que Flib, c'est à dire que mon prog puisse renvoyer une liste Ti-Basic de données, aussi bien chaines que nombres. Et cela à partir d'une variable que je peux modifier au cours de mon prog en C.

=> Je ne voit que la possibilité d'un tableau, qui sera transphormé en liste Ti-basic à la fin du programme.
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

23

Ca dépend ... tu veux renvoyer un nombre constant d'éléments ou pas ?
Seulement des chaines de caractères ?

24

arf... c possible... mais bon...
gérer le stack est déjà extrémement difficile... mais alors pour bosser en plus ac le BASIC...
ça sort de mes compétences sad
avatar
Tutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall

25

Oula merde si ça sort de tes compétences je suis mal barré moi roll

ZdRUbAl > en fait il faudrait que le prog soit capable de ressortir n'importe quelle liste mixte. Mais comme on ne peut pas allonger (enfin c difficile) une liste en cours de programme, disons une liste quelconque de 0 à 10 éléments, chaines ou nums...
Mais bon si c'est vraiment dur à ce point je ferais mieux de me limiter à des nums sad
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

26

Bob 64> ça sort de mes compétences parce que je n'ai jamais bossé dessus : c'est quelque chose dont je n'ai jamais eu besoin our mes programmes...
=> Tu n'as pas à te considérer comme mal barré.
avatar
Tutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall

27

Bah t'as quand même bcp + d'experience que moi en C
=> Si un prog te semble difficile, moi qui débute je vais en baver !
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

28

J'ai certes un peu d'expérience du langage C, en particulier pour TI, mais je n'ai quasiment aucune expérience de ce genre de manipulations sad
Le prog me semble difficile parce que je ne m'y connais pas...

A chaque fois que je commence un projet, y'a plein de trucs qui me paraissent difficiles... mais, une fois le projet fini, ça me semble tout simple : chauqe projet m'apprend des choses. ce ne serai pas interressant sinon
avatar
Tutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall

29

Au fait faut allouer cb de mémoire pour ma liste en basic ?
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

30

Le mieux serait que tu n'ajoutes que d'un type de données.