>DonPichol:
>a oue tien javai pas vu kil en manquai 1 (antislash) ds le post
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)