1

euh..bon voila je crois ke g un peu de mal avec tout ce ki est fichier externe,....

bon apres avoir chercher sans trouver:

je v vous mettre le code pour ke vous compreniez mieux

FILE *fichier2 = fopen ("HSCR", "wb");

fputs ("200 \0",fichier2);
fputs ("100 \0",fichier2);
fputs ("50 \0",fichier2);
fputs ("0 \0",fichier2);
fputc (0, fichier2);
fputs ("HSC", fichier2);
fputc (0, fichier2);
fputc (OTH_TAG, fichier2);


SYM_ENTRY *entry2;
void *HSC_ptr;
entry2=SymFindPtr(SYMSTR("HSCR"),0);
HSC_ptr=HeapDeref(entry2->handle)+2;
fclose (fichier2);

pour declarer mon fichier externe

et
for(i=0;i<5;i++){
sprintf (buffer_hsc, "%s",HSC_ptr+i*5);
XDrawDGlowStr(27,30+i*9,buffer_hsc,7);
}
pour l'afficher...
makeureusement... j'ai l'impression k'il ne prend pas en compte les"\0" ki doivent"fermer les chaines de caractere....

c a dire k'a chake ligne ca maffiche le score desiré + ceux ki suivent dans le fichier

voila
avatar
Plus t'avance moins vite
Moins t'avance plus vite...

forums/406

2

FILE *fichier2 = fopen ("HSCR", "wb");

fputs ("200",fichier2);
fputc (0,fichier2);
fputs ("100",fichier2);
fputc (0,fichier2);
fputs ("50",fichier2);
fputc (0,fichier2);
fputs ("0",fichier2);
fputc (0,fichier2);
fputc (0, fichier2);
fputs ("HSC", fichier2);
fputc (0, fichier2);
fputc (OTH_TAG, fichier2);

Essaye ça on sais jamais. wink
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

3

euh oui je c bien ke les espaces c po tres bo..mais c pour prevoir les socres ki vont juska 9999...
et a moins il existe une fonction permettant de decaler le reste du fichier..
ou meme d'exrire sans ecraser..
avatar
Plus t'avance moins vite
Moins t'avance plus vite...

forums/406

4

Il faut fermer le fichier avec fclose avant de venir le traffiquer avec SymFindPtr. Et il faudra aussi m'expliquer pourquoi tu mélanges les routines de stdio.h et celles de vat.h. Décide-toi pour une méthode! (Et je te conseille vat.h.)
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é

5

Et c'est idiot de stocker les chiffres sous forme de chaînes. Stocke-les directement.
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

C'est peut-être parce que tes chaînes sont de longueur variable. Donc soit tu ouvre le fichier avec fopen, soit tu fais un truc plus intelligent:
struct HighScores {
char score[3][10];
char extension[6]; // ou 7 si tu veux une extension de 4 lettres
}
Que tu utilises avec les fonctions de vat.h

EDIT: oups, pendant que j'écrivais, tout le monde a posté grin
avatar
Le scénario de notre univers a été rédigée par un bataillon de singes savants. Tout s'explique enfin.
T'as un problème ? Tu veux un bonbon ?
[CrystalMPQ] C# MPQ Library/Tools - [CrystalBoy] C# GB Emulator - [Monoxide] C# OSX library - M68k Opcodes

7

J'utilise jamais les fonctions fopen... mais je crois que tu devriat mettre fclose après fputc (OTH_TAG, fichier2);

Pour décaler le fichier je te propose une méthode barabre mais très simple, tu fait un fichier temporaire, tu inscrit au début ce ui ne doit pas être déplacé, puis le nonveau hightscore et le reste. Tu efface l'ancien et tu renomme le temps en ton fichier hightscore.

Si ton fichier ne varie pas en taille tu peut utiliser memcpy et memmove. Ou encore plus simple tu écrase l'ancien hightscore.

Tu pourrais donner le format du fichier?
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

8

loooooooooolll
hem....
euh...
je c pas si le fclose change grand chose
j'ave deja essailer de le faire avant
mais apres fo le reouvrir le fichier alors??
je fe fopen alors?

bon deja e v essailer ca

puis stoker les chiffres sous forme de chaine c clair c po tres optimiser mais bon ca marche kan meme nan?
pis c juste pour essailler puisk'apres je le ferai avec des caracteres..et la y a pas le choix!!!

et c koi le difference entre stdio et la vat
?
noob pawa..... hem
dsl
avatar
Plus t'avance moins vite
Moins t'avance plus vite...

forums/406

9

KWT-ArpiK :
loooooooooolll
hem....
euh...
je c pas si le fclose change grand chose
j'ave deja essailer de le faire avant
mais apres fo le reouvrir le fichier alors?? je fe fopen alors?

Non! Pas besoin d'ouvrir un fichier pour utiliser vat.h!
puis stoker les chiffres sous forme de chaine c clair c po tres optimiser mais bon ca marche kan meme nan?

Mais c'est lourd à gérer.
pis c juste pour essailler puisk'apres je le ferai avec des caracteres..et la y a pas le choix!!!

C'est vrai...
et c koi le difference entre stdio et la vat

La documentation, c'est pour les chiens?
http://tigcc.ticalc.org/doc/stdio.html
Je cite:
However, functions from this header file [stdio.h] are mostly not TIOS functions - they are completely written by me, so they are not embedded in the TIOS. That's why their use may cause your program to be larger than if you don't use functions from this header file. The typical increase in size is 300-2000 bytes, depending on which functions and how many different functions from this header file are used in the program. So, although functions from this header file are much more "standard" than TIOS-specific functions, it is better to avoid functions like fopen etc. Instead, use "non-standard" functions from the vat.h header file. Of course, functions from this header file may be very useful for porting a program from a "standard" computer to the TI. But I will repeat again: it is better to avoid them.
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

oki en fait fo utiliser la vat....si j'ai bien compris..ce ki est peu probable...

mais sinon pour en revenir a mon pti probleme...

persone voi pourquoi lle caractere nul n'est pas pris en compte?
avatar
Plus t'avance moins vite
Moins t'avance plus vite...

forums/406

11

Parce que fputs s'arrête au premier caractère nul qu'il trouve en s'attendant à ce que ce soit la fin de la chaîne. Manque de chance, c'est celui que tu as mis explicitement.
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é

12

euyh..chu pas sur davoir tout saisi..enfait, fputs m'a zapper mon null???
l'**""#"
!!!
donc en fait fo ke je le rajoute apres du genre

*(BYTE*)(HSC_ptr+4)=0;
...
mais en fesant ca..cela ecrase les donnees situees a cet endroit de la memoie nan??
y a pas une fonction ki "insererai" plutot?
avatar
Plus t'avance moins vite
Moins t'avance plus vite...

forums/406

13

Écris tout avec vat.h, c'est plus simple.
Sinon, tu peux faire comme suggéré par geogeo et mettre un fputc(0,f);.
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é

14

perso je te conseillerai d'utiliser les fonctions de vat.h, et ça sera beaucoup plus simple.
Enfin, je dis ça parce que la seule fois où j'ai voulu utiliser ces fonctions, ça a lamentablement foiré (cf http://pub26.ezboard.com/ftichessteamhqfrm15.showMessage?topicID=449.topic). D'ailleurs les fonctions de vat.h permettent de faire du code bien plus léger et bien plus utilisable.
EDIT: je met décidément bien trop de temps à écrire grin
avatar
Le scénario de notre univers a été rédigée par un bataillon de singes savants. Tout s'explique enfin.
T'as un problème ? Tu veux un bonbon ?
[CrystalMPQ] C# MPQ Library/Tools - [CrystalBoy] C# GB Emulator - [Monoxide] C# OSX library - M68k Opcodes

15

oki jve essailler avec la vat..mais mise a part (o c zoli ca )) ) la doc de YIGCC, yore pas une otre doc..en francais..
enfin sinon c po grave
jve essailler

kk> fputc c por mettre un char
mais ca ecrase ossi?
avatar
Plus t'avance moins vite
Moins t'avance plus vite...

forums/406

16

KWT-ArpiK
: kk> fputc c por mettre un char

Oui.
mais ca ecrase ossi?

Ça dépend de comment tu l'utilises. Utilisé comme proposé par geogeo, ça n'ecrase pas, ça rajoute à la fin.
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é

17

oki le zero de fputc(o,ficher)
il sert a koi?
admettons ke je n'ai rien dit..
dsl il fe tro cho...
looooooooooooool
avatar
Plus t'avance moins vite
Moins t'avance plus vite...

forums/406

18

À mettre ton '\0'!
Tu peux aussi marquer '\0' si ça te fait plaisir, ça revient au même. smile
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é

19

oui mdr g editer tro tard ptetre...

et pour le probleme de l'ecraseme,t:
si g lon fichier deja creer, et ke je veut rajouter un score genre en 3 eme place,....
je pourrais pas rajouter le \0 avec fputc..je srai bolige de fair otrement nan?
avatar
Plus t'avance moins vite
Moins t'avance plus vite...

forums/406

20

1 - tu sauvegarde tes scores
2 - tu recrée le fichier
avatar
Le scénario de notre univers a été rédigée par un bataillon de singes savants. Tout s'explique enfin.
T'as un problème ? Tu veux un bonbon ?
[CrystalMPQ] C# MPQ Library/Tools - [CrystalBoy] C# GB Emulator - [Monoxide] C# OSX library - M68k Opcodes

21

Tu peux écraser si ton format te le permet, c'est à dire que les noms et scores ne sont pas variable en taille.

Tu fait quoi comme format pour les données?
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

22

KWT-ArpiK
: si g lon fichier deja creer, et ke je veut rajouter un score genre en 3 eme place,....

Alors ton '\0' y est déjà parce que tu l'as mis la première fois. roll
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é

23

Pff, franchement, pourquoi s'êmbeter avec des trucs de longueur variable ? Une simple structure de 3 'unsigned long' écrite avec fwrite ferait l'affaire.
avatar
Le scénario de notre univers a été rédigée par un bataillon de singes savants. Tout s'explique enfin.
T'as un problème ? Tu veux un bonbon ?
[CrystalMPQ] C# MPQ Library/Tools - [CrystalBoy] C# GB Emulator - [Monoxide] C# OSX library - M68k Opcodes

24

euh..ptite kestion....
je crois ke j'ai fe une connerie en choisissant une chaine de char pour les scores
fallait mieu fair un fwrite comme disait.euh..je c plus

pis sinon
fputs ou fwrite..ca permet pas de mettre sa chaineo "mileu du fichier"
c a dire a l'adresse kon veut.. y a pas une fonction de ce type(fputs) ou on puisse preciser l'adresse du pointeur??
avatar
Plus t'avance moins vite
Moins t'avance plus vite...

forums/406

25

ba oui, tiens, tu peux faire ça pour chaque score:
position = ftell(fichier2);
// Mettre 10 '0' avec fwrite ou fputc (10 c'est le nombre de chiffres de 2^32)
fseek(fichier2, position, SEEK_SET);
// écrire le score avec fputs
Ensuite, tu sais que chaque score prend tjrs 10 octets, même s'ils sont parfois à 0, donc c'est plus facile à accéder (et modifier)
avatar
Le scénario de notre univers a été rédigée par un bataillon de singes savants. Tout s'explique enfin.
T'as un problème ? Tu veux un bonbon ?
[CrystalMPQ] C# MPQ Library/Tools - [CrystalBoy] C# GB Emulator - [Monoxide] C# OSX library - M68k Opcodes

26

cuhi pas sur davoir tout bien compris la....
chui vraiment une sous merde ou bien???
lol

[edit]
ou sinon je refai tou le fichier..en uploadant koi..
avatar
Plus t'avance moins vite
Moins t'avance plus vite...

forums/406

27

je vais expliquer correctement alors (d'ailleirs je viens de me rendre compte que j'avais oublié un truc).
la fonction ftell(const FILE *stream) te donne ta position dans le fichier.
Donc tu l'utilises pour sauvegarder la position ds le fichier.
Ensuite, tu écris 10 caractères 0 à l'aide de fputc, on verra plus tard pourquoi faire ça
Là tu sauvegardes la position dans une autre variable avant d'utiliser fseek pour remettre la position d'avant.
Maintenant, tu utilises fputs pour mettre ta chaîne dans le fichier et là tu as 10 caractères pour ton score. Ceux qui ne sont pas ré-écrits par ta chaîne sont à 0 et c'est ce qu'il faut.
Pour finir l'écriture de ce score, tu restore la position n°2 avec fseek
Ensuite tu peux connaître l'adresse relative de chaque chîne avec 10 * numéro_de_la_chaîne.
avatar
Le scénario de notre univers a été rédigée par un bataillon de singes savants. Tout s'explique enfin.
T'as un problème ? Tu veux un bonbon ?
[CrystalMPQ] C# MPQ Library/Tools - [CrystalBoy] C# GB Emulator - [Monoxide] C# OSX library - M68k Opcodes

28

On admet que tu a 5 scores max, un nom de joueur fait 3 caractères et un score 2 octets, donc on a max 99, donc ton fichier ce présentera de la façon suivante:

GEO-99-KWT-85-BB--15-LOL-01-AAA-50

Ce format est le plus simple à modifier et à lire.

Donc à l'offset 0 tu as GEO, il te suffira de l'afficher, puis tu compte 4 offset et tu as le score, tu fait ça pour afficher tous les hightscoer donc ça donne (7*score n°)-7. On comme à 1 pour score n°.

Les - représentent le caractère NULL.


Pour modifier un hightscore c'est un jeu d'enfant, tu écrase les données rien de plus.
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

29

geogeo> oui c ce ke je fait..'sof ke mes socres et me noms sont separes..)
mais comment ecreser a une adress precise...
car fputs ca fout ala fin..
ou alors fo le faire avec fssek et ftell mais la g po encore bien compris
mais steuplait goldencrystal laisse moi le tps!! chui suer lent kom gar!!
lol

avatar
Plus t'avance moins vite
Moins t'avance plus vite...

forums/406

30

KWT-ArpiK :
mais comment ecreser a une adress precise...
car fputs ca fout ala fin.. ou alors fo le faire avec fssek et ftell mais la g po encore bien compris

Soit tu utilises fseek, soit les routines de vat.h.
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é