1

Je programme en C depuis qq jours et j'essaye d'adapter mon prog Partoche (editeur de partitions cf software) en C.
Je me suis pe attaqué à un gros morceau pour débuter mais sinon je saurais pas quoi faire.
Donc mon problème va pe vous paraitre simple:
Mon prog en Basic sauvegardait chaque partition dans une matrice.
Pour mon prog en C j'ai besoin:
-de pouvoir utiliser un tableau de valeur de type int, extensible, de 3*x, sans qu'il soit stocké dans le programme.
-de pouvoir enregistrer ce tableau sous la forme d'une variable personnalisée, avec un nom donné par l'utilisateur
-de pouvoir la retrouver, et le retransformer ensuite sous forme de tableau.
Je remercie toute aide, lien utile, qui pourrait m'aider dans cette tache, et aussi Thibaut, qui m'as proposé son aide.
the car's on fire and there's no driver at the wheel
and the sewers are all muddied with a thousand lonely suicides
and a dark wind blows

GYBE! Dead Flag Blue

2

le tuto de ti-fr
tongue

3

arf... mon tuto :-)
Quoique, je suis même plus trop sûr de parler de ça dedans...
Entre les chapitre que g écrit, ceux que je veux écrire, ceu que je vais écrire, et ce que je sais sans le mettre dans le tuto, j'ai un peu tendance à m'embrouiller....
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

4

ben c'est un peu grace à ce tuto que j'ai commencé à apprendre, donc j'ai pas trouvé les réponses que je cherchais la dedans. Donc si tu veux faire des nouveaux chapitres fait-les la-dessusgrin.
J'ai aussi regardé la faq de tigcc mais j'ai pas trouvé de réponse à ma question la-dedans.
Sinon j'ai déjà commencé, y'a un autre détail qui est pas dans tuto, c'est à propos des request dans les dialogbox, dans l'exemple y'en à qu'un et tu dis que tu sais pas à quoi sert l'offset. Je sais donc tjs pas comment mettre +ieurs request dans 1 m^me menu. Vais revoir la doc.
the car's on fire and there's no driver at the wheel
and the sewers are all muddied with a thousand lonely suicides
and a dark wind blows

GYBE! Dead Flag Blue

5

>> Pour mon prog en C j'ai besoin de pouvoir utiliser un tableau extensible, de 3*x
Tu veux dire quoi par extensible de 3x ??

>> sans qu'il soit stocké dans le programme.
Dans n'importe quel tuto sur le C sur PC, il y a une explication des fonctions d'écriture de fichiers (fopen, fwrite) http://www.goggle.com. Mais en C, tu manipuleras ton tableau en RAM (dans ton programme tel que tu l'entend), et tu en feras un fichier à la fin seulement. Pour le tableau en RAM, 2 choses sont nécessaires : malloc qui réserve de la RAM rien que pour toi, et la notion des pointeurs.

>> de pouvoir enregistrer ce tableau sous la forme d'une variable personnalisée, avec un nom donné par l'utilisateur
Ben c'est pas le plus dur smile Quand tu auras vu les fonctions d'écriture, tu devineras tout seul comment faire. En une instruction c'est enregistré !

>> de pouvoir la retrouver, et le retransformer ensuite sous forme de tableau.
Réciproquement c'est pas dur smile


Voilà, 2 petites minutes de lecture du premier tuto venu et toutes tes questions auront trouvé une réponse 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.

6

malloc attend comme paramètre la taille en octets de la zone que tu veux allouer, et renvoie l'adresse de cette zone. Si cette adresse est égale à 0, c'est qu'il n'y a plus assez de RAM dans la calto de l'utilisateur. Donc :
PointeurSurUneStructureDeTypeInt= malloc(2*TailleDuTableauEnElements);
[edit]Edité par Thibaut le 10-08-2001 à 20:08:36[/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.

7

Merci pour ces précisions. Donc dans n'importe quel tuto C pour PC je peux trouver ce que je cherche?
Je pensais que le C pour TI était trop spécifique.
sinon ce que je veux faire c'est un tableau de
de 3 lignes par x colonnes ou x varie en fonction de mes besoins.
"PointeurSurUneStructureDeTypeInt= malloc(2*TailleDuTableauEnElements);"
ça veut dire que 2 et "Tailledutableau" sont les dimensions?
Je vais essayer de trouver des infos sur les pointeurs
the car's on fire and there's no driver at the wheel
and the sewers are all muddied with a thousand lonely suicides
and a dark wind blows

GYBE! Dead Flag Blue

8

La taille a passer à malloc est en octets. Le type Int fait 2 octets. Donc la taille en RAM du tableau est sa taille en éléments multipliée par 2.

Cherche fopen dans un tuto pour PC, et avec les renseignements que tu as en plus avec squale92 & Verstand, tu devrais y arriver.
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.

9

J'ai trouvé un tuto sur le c et je l'ai lu en entier. Je suis déjà un peu moins paumé.
Mais la fonction malloc crée un espace en 1 dimension, et moi j'ai besoin de 2 dimensions,dont la taille augmente. Bon là j'suis crevé j'verrais ça demain.
the car's on fire and there's no driver at the wheel
and the sewers are all muddied with a thousand lonely suicides
and a dark wind blows

GYBE! Dead Flag Blue

10

J'ai trouvé une technique pour faire des matrices "dynamiques" (faut qd même la recopier membre à membre dans une + grande).
C dans la faq de tigcc.
Je me demande maintenant comment copier la matrice
dans le fichier de sauvegarde d'un coup et faire le contraire ensuite.
the car's on fire and there's no driver at the wheel
and the sewers are all muddied with a thousand lonely suicides
and a dark wind blows

GYBE! Dead Flag Blue

11

doom
Tu as vu les fonctions de "remplissage" de fichiers ?
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.

12

Je crois que j'y suis arrivé. En fait je vais écraser l'ancien fichier à chaque sauvegarde.
Mais je n'arrive pas à faire une liste des variables avec mon extensions, et j'ai un peu du mal à comprendre les manips dans la vat.
est-ce qu'il faut obligatoirement utiliser le stack?
the car's on fire and there's no driver at the wheel
and the sewers are all muddied with a thousand lonely suicides
and a dark wind blows

GYBE! Dead Flag Blue

13

Non je ne crois pas.
Tu veux utiliser le stack pour quoi ?
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

En fait dans la faq de tigcc ya une fonction qui permet de connaitre le type d'une variable qui utilise le stack. Mais c bon, TImad m'as donné la solution pour trouver l'extension. Maintenant j'essaye de stocker une liste variable de chaines conenant le nom d'une variable. Apparement une technique consiste à faire une liste de pointeur vers SYM_ENTRY et de n'utiliser ensuite que le nom, mais est-ce que ce n'est pas possible d'utiliser calloc ou malloc pour gagner de la place?
the car's on fire and there's no driver at the wheel
and the sewers are all muddied with a thousand lonely suicides
and a dark wind blows

GYBE! Dead Flag Blue

15

ça marche pas!
voilà la syntaxe que j'utilise:
SYM_ENTRY *liste[20];
...
x=0;
...(si variable custom "mus"):
liste[x++]=SymPtr;
...
instruction (liste[x]->name,...);

où liste[x]->name est un string.
QQ à t'il une idée pkoi ça marche pas?
Le reste de la routine est bonne, j'ai tt verifié.
the car's on fire and there's no driver at the wheel
and the sewers are all muddied with a thousand lonely suicides
and a dark wind blows

GYBE! Dead Flag Blue

16

Tu as plusieurs fichiers dont les noms sont resencés dans une matrice dynamique, c'est ça ?
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.

17

non, j'utilise une matrice fixe pour le moment.
J'ai essayé une autre méthode plus gourmande mais plus simple qui a marché:
char *liste[9][15];
...
string = &liste[0][x];
ou x= position du nom.

J'essaie maintenant d'écrire dans une matrice dynamique de type (en fait c pour résumer)
short mat[size][3].
J'arrive déjà à gerer la matrice et à l'agrandir.
J'aimerais recopier le contenu d'un fichier dans cette matrice.
J'ai essayé ça:

size= (taille_du_fichier-8)/6;
//8 octets de définitions, 6 octets par bmoc
fich = fopen(&liste[0][x],"rb")
fread (&mat[0][0],sizeof(int)*3,size,fich);
fclose(fich);

mais l'instruction fread provoque une illegal instruction, je comprend pas pourquoi.
j'avais utilisé exactement le même système avec fwrite et ça marchait.

the car's on fire and there's no driver at the wheel
and the sewers are all muddied with a thousand lonely suicides
and a dark wind blows

GYBE! Dead Flag Blue

18

pfff...
en fait la méthode que je cite + haut ne marche pas du tout, j'avais pas les test aux bons endroits. Donc je cherche tjs une méthode de stockage des noms de variables tios.
ça devrait pourtant pas être très dur.
La suite marche en fait très bien.
the car's on fire and there's no driver at the wheel
and the sewers are all muddied with a thousand lonely suicides
and a dark wind blows

GYBE! Dead Flag Blue

19

c pas con ton idée!
j'avais pas du tt pensé à utiliser ça. Je vais essayer.
si vous avez d'autres idées n'hesitez pas, vu le nbre de trucs que j'ai essayé,
the car's on fire and there's no driver at the wheel
and the sewers are all muddied with a thousand lonely suicides
and a dark wind blows

GYBE! Dead Flag Blue

20

j'en ai marre!
ton truc avait l'air valable mais soit j'arrive pas à m'en servir soit c pas efficace pour ce que je veux faire, en tout cas j'arrive pas à obtenir le nom des fichiers à partir de ça. c chiant, c pourtant pas un gros problème mais j'arrive pas à le résoudre
the car's on fire and there's no driver at the wheel
and the sewers are all muddied with a thousand lonely suicides
and a dark wind blows

GYBE! Dead Flag Blue

21

Bon j'ai finalement trouvé ce qui clochait, ct vraiment pas la peine de vous déranger,
j'ai écris
while(SymPtr)
{
x=0;...
au lieu de
x=0;
while(SymPtr)
{...
une erreur que m^me un débutant en basic n'aurait pas faite. grin
donc j'ai finalement utilisé le truc le plus simple cad
char liste[150];
...
strcpy(liste[x++*10],SymPtr->name);
donc je suis vraiment desolé de vous avoir derangé pour rien.
Bon merci qd même pour vos conseils, car maintenant ça marche!
J'ai fait le + gros cad la gestion des variables;
il me reste + que la partie graphique et les changement de page, ça devrait être + facile.
de tt façon, je vois pas en quoi ça peut vous interresser ce que je disgrin
the car's on fire and there's no driver at the wheel
and the sewers are all muddied with a thousand lonely suicides
and a dark wind blows

GYBE! Dead Flag Blue

22

Ca m'intéresse, je joue de la musique et j'ai hâte de voir ton prog en C smile
Si jamais tu ne trouve pas moyen de faire du son à partir de la matrice (sans passer par un convertisseur pour la mettre en je-ne-sais-quel-format) j'essaierai de t'écrire une fonction C-ASM.
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

merci c sympa. Si jamais j'nai vraiment marre et que j'arrive pas à faire qqchose je t'enverrais mon source.
Put1 le nbre de conneries que je peux faire en 10 lignes de code!
J'en suis à l'affichage de l'armure mais je pars une semaine.
il me reste l'affichage de toutes les notes, et c pas le plus court.
Mon prog fait déjà 5150 octets!
Pour le son, je peux aussi éventuellement piquer la routine son de FL et me faire mon propre player
compatible ou à peu près (mon format est essentiellement graphique), ce sera plus pratique;
Je dois aussi rajouter un bon paquet de securité pour éviter des plantages.
Enfin le prog avancera jamais aussi vite que cette semaine, où j'ai +ieurs * failli laisser tomber.
Bon je vais m'y remmetrewink
the car's on fire and there's no driver at the wheel
and the sewers are all muddied with a thousand lonely suicides
and a dark wind blows

GYBE! Dead Flag Blue

24

bon j'ai fini une grosse partie du prog.
Le problème mainenant c'est de tourner les pages:
j'y arrive pas!
J'utilise pluiseurs fonctions:
-la fctn principale
-une fctn qui affiche toutes les notes (ouvrir) ou seulement la dernière (nvelle note).
Je peux pas calculer à combien de notes correspond une page à cause des barres de mesures.
Je veux donc stocker jusqu'à 4 copies de l'écran, mais si j'utilise des variables globales c énorme.
comment renvoyer +ieurs arguments de valeurs différentes avec return?
je vais finir par utiliser des images tios, ce sera + facile
sinon vous pouvez dl une 1ere version où il manque principalement ce que je viens de citer ici:
[url]http://www.multimania.com/kelso70s/portee.zip
[/url]
et voir cette image:
partoche.bmp
voilà amusez vous bien, et dites moi si ça plante, normalement j'ai mis plein de securités.
[edit]Edité par Kelso le 17-08-2001 à 22:51:42[/edit]
the car's on fire and there's no driver at the wheel
and the sewers are all muddied with a thousand lonely suicides
and a dark wind blows

GYBE! Dead Flag Blue

25

copiez le lien, il marche pas tt seulmad
the car's on fire and there's no driver at the wheel
and the sewers are all muddied with a thousand lonely suicides
and a dark wind blows

GYBE! Dead Flag Blue

26

Bon je crois que je vais encore avoir recours à un
calloc(nbre de pages,3840)
the car's on fire and there's no driver at the wheel
and the sewers are all muddied with a thousand lonely suicides
and a dark wind blows

GYBE! Dead Flag Blue