1

Bonjour, en fait j'ai deux questions, si quelqu'un saurait me répondre..smile
* j'aimerais bien voir la taille d'un fichier sur la ti, un genre de GetFileSize en C (api)
* est-il possible de reconnaitre le type d'un fichier sans library externe

Merci

2

- une fois que tu as le pointeur vers les données du fichier (donc si "sym" est un pointeur vers le SYM_ENTRY de ton fichier, ça donne qqchose comme HeapDeref (sym->handle)), tu peux lire la taille qui est dans les deux premiers octets du fichier, en non signé.

- oui, il suffit d'aller lire le dernier octet du fichier (son "TAG"), qui sera soit un type connu par AMS (genre TEXT, PRGM, etc...), soit "OTH", et à ce moment là tu "recules" ton pointeur pour aller lire l'extension personnalisée du fichier (qui est codée comme une chaine en C, c'est à dire les caractères puis un '\0', il me semble qu'il y a également un '\0' avant la chaine d'ailleurs)

(direction "doc de TIGCC" pour en savoir plus, comme d'habitude...)
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

3

J'ai ces fonctions qui traînent si tu veux smile

symPtr étant un pointeur sur la SYM_ENTRY du fichier en question la taille est :
((MULTI_EXPR*)HeapDeref(symPtr->handle))->Size+2

le nom de la fonction parle de lui même tongue
char* getOthExtension(const char* rep, const char* nom)
{
	char buf[18];
	sprintf(buf,"%s\%s",rep,nom);
	char *ptr=HeapDeref(SymFindPtr(SYMSTR(buf),0)->handle);
	ptr+=*(ushort*)ptr-1;
	while(*--ptr);
	return ptr+1;
}
avatar
Combien de tas de bois une marmotte pourrait couper si une marmotte pouvait couper du bois ?

4

la taille renvoyée est toujours égale a 0
HANDLE handle;
char *ptrFILE;
SYM_ENTRY *sym ;
ClrScr();
handle=HeapAlloc(16);
if(!handle) return;
sym=DerefSym(SymAdd(SYMSTR("cours\esstphy")));
sym->handle=handle;
ptrFILE=HeapDeref(handle);
printf("Handle: %i \n Taille:%i",handle,ptrFILE);
ngetchx();

mais le handle est différent de 0

C'est mon code qui est pas bon ?:s

5

printf("Handle: %i \n Taille:%i
",handle,ptrFILE);

oui, mais tu devrais *vraiment* lire la doc de TIGCC (enfin là ça serait plutôt un cours de C) avant de créer des topics :/
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

6

ouai, jcrois que c'est ce que je vais faire
++

7

.1/ je vois que tu connais l'api Win32. Pour te simplifier la vie, je te conseille de te faire une HAL qui fait abstraction du code TI/WIN32/autre systèmes. (c'est peut-être ce que tu penses faire). Comme ça tu peux directement développer sous Visual Studio, puis au dernier moment, tu recompiles le tout sous TIGCC. C'est ce que je fais sur mon projet TokiTori. Si ça t'interesse, j'ai une mini HAL qui fait abstraction du code TI/Win32 pour la gestion des fichiers (via Win32), des touches et du graphisme (via allegro), bref, les entrées/sorties. Mais la couche n'est pas encore toute à fait finie. Et pour les puristes, je les entends venir, non ça ne ralenti pas puisque le code de la HAL est propre à la platforme (avec des #IFDEF...) avec un tronc commun qui se compose des paramêtres des fonctions de la HAL (c'est le principe même d'une HAL).
There is no spoon.

8

Je pense qu'il devrait avant tout suivre le conseil de Zephyr ./5.
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.

9

ce n'était qu'une suggestion...
There is no spoon.