1

Pk ca marche pas sad
il faut creer un petit fichier appele a dans main (ex : une expr )

// C Source File
// Created 17/01/02; 21:45:07

#define USE_TI89 // Produce .89z File

// #define OPTIMIZE_ROM_CALLS // Use ROM Call Optimization

#define SAVE_SCREEN // Save/Restore LCD Contents

#include <tigcclib.h> // Include All Header Files

// Main Function
void _main(void)
{
short int buff[1];

FILE* expr;

expr = fopen("main\a", "rb")
ClrScr();

do {
fread(buff, sizeof(short int), 1, expr);
printf("%hd", buff[0]);
} while(buff != NULL);

ngetchx();

fclose(expr);

}
bon normalement ca devrait sarreter a la fin du fichier?????????????????
Jah Live !
And Never Die !!

2

>bon normalement ca devrait sarreter a la fin du fichier?????????????????

Ben non, fread ne peut pas modifier buff.
Il faut lire la valeur retournée par fread ou utiliser feof pour repérer la fin du fichier.
(D'ailleurs, rien ne dit que la taille de ton fichier sera paire, donc utiliser des short ints plutôt que des unsigned chars pour le lire me paraît une mauvaise idée.)

Ou alors lire le fichier par les fonctions de vat.h (ma méthode préférée, personnellement - c'est tellement plus simple de pouvoir lire directement d'un bloc de mémoire plutôt que de passer par des fonctions compliquées de style fread).
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é

3

Et il vaut mieux mettre fopen("main\a","wb")

4

>Ben non, fread ne peut pas modifier buff.

Ben si : fread recopier dans la variable buff le nombre d'objet (en loccurence 1) de taille (ici 16) du flot de fichier (ici expr)
et incremente le pointeur de fichier du nombre total de bits lu (ici 1* 16)

>Il faut lire la valeur retournée par fread ou utiliser feof pour repérer la fin du fichier.
je peu aussi faire ca c sur mai jy pas penser
jai toujours fait comme ca (enfin par sur ti)

>(D'ailleurs, rien ne dit que la taille de ton fichier sera paire, donc utiliser des short ints plutôt que des unsigned chars pour le lire me paraît une mauvaise idée.)
c surwink

>Ou alors lire le fichier par les fonctions de vat.h (ma méthode préférée, personnellement - c'est tellement plus simple de pouvoir lire directement d'un bloc de mémoire plutôt que de passer par des fonctions compliquées de style fread).

lol, jai pas trop lhabitude de fourrer mon nez dans la mem comme ca (jcode surtout sur pc)

>Et il vaut mieux mettre fopen("maina","wb")

pk, jveu pas ecrire dessus, juste le lire wink
Jah Live !
And Never Die !!

5

>DonPichol:
>>Ben non, fread ne peut pas modifier buff.
>Ben si : fread recopier dans la variable buff le nombre d'objet (en loccurence 1) de taille (ici 16) du flot de fichier (ici expr)

Oui, mais ça change les valeurs pointées par buff, pas la valeur du pointeur lui-même!
fread ne mettra jamais buff à NULL, elle ne peut pas le faire: le pointeur est passé par valeur! Et en plus c'est un tableau, donc un pointeur constant!

>et incremente le pointeur de fichier du nombre total de bits lu (ici 1* 16)

C'est un pointeur à l'intérieur de la structure FILE pointée par expr qui est modifié (un pointeur à usage interne que tu n'es pas censé utiliser), pas le pointeur buff. Et c'est mesuré en octets, pas en bits.

>>Il faut lire la valeur retournée par fread ou utiliser feof pour repérer la fin du fichier.
>je peu aussi faire ca c sur mai jy pas penser
>jai toujours fait comme ca (enfin par sur ti)

Et ça a toujours été faux.

>>Ou alors lire le fichier par les fonctions de vat.h (ma méthode préférée, personnellement - c'est tellement plus simple de pouvoir lire directement d'un bloc de mémoire plutôt que de passer par des fonctions compliquées de style fread).
>lol, jai pas trop lhabitude de fourrer mon nez dans la mem comme ca (jcode surtout sur pc)

Et moi, quand je ne code pas sur TI, les fonctions de vat.h me manquent toujours.

>>Et il vaut mieux mettre fopen("main\a","wb")
>pk, jveu pas ecrire dessus, juste le lire

En effet, je ne vois aucune raison de l'ouvrir en "wb". En revanche, il faudrait doubler l'antislash:
fopen("main\a","rb")
[edit]Edité par Kevin Kofler le 18-01-2002 à 19:33:09[/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é

6

Non, désolé, je me suis trompé.
Je voulais dire qu'il fallait doubler l'antislash, mais il semblerait que le forum coupe le double anti-slash (ma remarque ne portait pas sur wb ou rb, mais sur le double slash smile)
Mais je pense que tu l'as mis aussi, c'est juste le forum qui l'a tronqué smile

7

a oue tien javai pas vu kil en manquai 1 (antislash) ds le post wink

c dailleur un truc ki ma surpris : la ouverture de fichier fonctionne comme sous un os
Jah Live !
And Never Die !!

8

maintenant quant jveu lire la taille du fichier, le prog me sort une mauvaise valeur
pk???? sad

void _main(void)
{
unsigned short int buff;

FILE* expr;

expr = fopen("main\a", "rb")
ClrScr();

fread(&buff, sizeof(unsigned short int), 1, expr);
printf("n%hd", buff);

ngetchx();

fclose(expr);
}

Kevin dit dans l'autre post :
>Le bloc de tout fichier commence par sa taille, codée en un unsigned short.
ben ca marche posad
Jah Live !
And Never Die !!

9

>DonPichol:

>a oue tien javai pas vu kil en manquai 1 (antislash) ds le post wink

Oui, il faut doubler tous les antislashs que l'on poste ici.

>c dailleur un truc ki ma surpris : la ouverture de fichier fonctionne comme sous un os

Oui, ce sont les fonctions de stdio.h de TIGCCLIB qui servent surtout à pouvoir porter plus facilement des programmes pour PC. Mais il est également dit (mais malheureusement la plupart des gens, dont toi, s'en fiche) qu'il faut utiliser vat.h plutôt que ça, parce que c'est plus rapide et prend moins de place.

Je cite:
However, functions from this header file are mostly not TIOS functions - they are completely written by me, so they are not embedded in the TIOS. That's why usage of them may cause that your program will be larger than if you don't use functions from this header file (typical increase of the size is 300-2000 bytes, depending of 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 program from a "standard" computer to the TI. But, I will repeat again: it is better to avoid them.
(Zeljko Juric, documentation de TIGCC)

>Kevin dit dans l'autre post :
>>Le bloc de tout fichier commence par sa taille, codée en un unsigned short.
>ben ca marche po

C'est parce que les fonctions de stdio.h traîtent la taille séparément (pour retrouver EOF ou pour calculer la place à allouer en cas d'écriture dans un fichier) et le premier octet obtenu est le troisième octet du bloc mémoire du fichier, c'est-à-dire le premier octet de données.
Si tu as besoin de connaître la taille par l'avance, tu peux:
- soit faire comme sur PC (fseek(expr,0,SEEK_END);taille=ftell(expr);rewind(expr);)
- soit essayer des astuces de style fseek(expr,-2,SEEK_SET); (aucune idée si ça passe, c'est sale en tout cas) ou une lecture directe dans la structure FILE de style ((unsigned short *)(expr->base))[-1] (assez sale comme méthode, la structure FILE est pour l'usage interne uniquement en principe)
- soit utiliser les fonctions de vat.h, qui donnent un accès direct à ce genre d'informations (tu obtiens le handle du bloc, tu le déréférences avec HeapDeref et tu es libre de lire la taille avec *(unsigned short *)pointeur)
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

>la plupart des gens, dont toi, s'en fiche

g jamais di ca, je connai pas parceke commence a code sur ti, mai si tu dit ke c bien alors il vau mieu l'utiliser sur ti

merci pour tes conseils
Jah Live !
And Never Die !!

11

C'est vrai que pour commencer les fonctions de vat.h sont assez dures à utiliser sad