30

IroS > Utiliser les fonctions fseek et autres pour ça, c'est un peu dommage... Pour les extensions perso, y'a 0, puis les 3 ou 4 caractères, puis un autre 0, puis le tag 'OTH' : 248.

Squale > Le PC sur lequel j'ai stoqué ton fichier txt a crashé sad
Ça n'était pas bien compliqué de faire la fonction que je cherchais, mais par contre je ne sais pas comment différencier un PRGM d'une FUNC. Comment faut-il faire ?
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

31

Xavier Vassor l'explique sur le site de doors :http://start.at/doors
mais je crois que c'était pour ti 92 et 92 II
peut-être est-ce adaptable aux 89 et 92+ ??

32

Arf en effet mais c'est de l'ASM sad
Quelqun peut m'expliquer ce que ça signifie ?
To distinguish the PRGM and FUNC type you have to do:
cmp.b #$19,-5(a0,d1.w)
If -5(a0,d1.w) is not #$19 then the variable has the FUNC type,else it has the PRGM type.
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

33

a0 est l'adresse de la variable
d1 est la longueur de la variable (sans le +2)
donc:
if (*(ptr_var+long-5)!=0x19) {
   FUNC
} else {
   PRGM
}

34

IroS a écrit :
pour le 1 et si le fichier est de type OTH j'avais trouvé ça:

char EXT[5]
FILE *f = fopen(mon_fichier,"rb") 
fseek(f,-6,SEEK_END); 
fgets(EXT,6,f);

ça marche pour des extension de un à quatre charactères personnalisés.

Non, c'est faux. S'il y a moins de 4 caractères, tu ne lis pas l'extension correctement avec ça.

Correct:
char *GetCustomType(const char *filename)
{
  SYM_ENTRY *sym=SymFindPtr(SYMSTR(filename),0);
  if (!sym || !(sym->handle)) return 0;
  ESI type=HToESI(sym->handle);
  if (*(type--)!=OTH_TAG) return 0;
  while (*(--type));
  return type+1;
}
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é

35

hibou a écrit :
a0 est l'adresse de la variable
d1 est la longueur de la variable (sans le +2)
donc:
if (*(ptr_var+long-5)!=0x19) {
   FUNC
} else {
   PRGM
}

Plus sûr:
if (*(ptr_var+long-4)!=0xE4||*(ptr_var+long-5)!=0x19) {
   FUNC
} else {
   PRGM
}

ou avec les constantes qu'il faut:
if (*(ptr_var+long-4)!=EXT_INSTR_TAG||*(ptr_var+long-5)!=PRGM_ITAG) {
   FUNC
} else {
   PRGM
}

(Le tag programme, c'est 0x19 0xE4, pas juste 0x19.)
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é

36

Pour un switch avec tous les types :
char ext[5];
src += *(unsigned short *)src - 1; // On pointe sur l'extension
switch(*src)
{
case STR_TAG:
	strcpy (ext, "STR")
	break;
case TEXT_TAG:
	strcpy (ext, "TEXT")
	break;
case PIC_TAG:
	strcpy (ext, "PIC")
	break;
case GDB_TAG:
	strcpy (ext, "GDB")
	break;
case FIG_TAG:
	strcpy (ext, "FIG")
	break;
case MAC_TAG:
	strcpy (ext, "MACR")
	break;
case DATA_TAG:
	strcpy (ext, "DATA")
	break;
case LIST_TAG:
	if (*(src-1) == LIST_TAG)
		strcpy (ext, "MAT")
	else
		strcpy (ext, "LIST")
	break;
case FUNC_TAG:
	while (src > src2 && *src-- != 0xE5);
	if (*src == 0xE4 && *(src-1) == 0x19)
		strcpy (ext, "PRGM")
	else
		strcpy (ext, "FUNC")
	break;
case OTH_TAG:
	src -= 5;
	if (!*src)
		memcpy (ext, src+1, 4);
	else
		memcpy (ext, src, 5);
case ASM_TAG:
	if (!strncmp(src2+6,"68kL",4))
		strcpy (ext, "LIB")
	else
		strcpy (ext, "ASM")
	break;
default:
	strcpy (ext, "EXPR")
	break;
}

vala smile
Mon site perso : http://www.xwing.info

37

merci, mais trop tard je l'ai déjà fait smile

(par contre le miens il différencie pas ASM et LIB)
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

38

Bob> j'avais pas de PC cette semaine...
dsl, pas pu voir ton post smile

mais j'ai l'impression que c bon, le pb est résolu smile

(sinon, dis, et je renvoie)
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

39

Nan c'est bon, il est résolu, mais merci quand même smile
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

40

OK.
ben, de rien smile

(tant que tu te met au C, je veux bien t'aider smile)
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

41

Ben... En ce moment les problèmes que j'ai c'est de l'algo, pas du C sad
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

42

arf.
sauf que l'algo, c la base absolue de la prog
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

43

Bah ouais mais bon, on ne peut pas tout savoir faire...
Perso le pathfinding j'y connais pas grand chose, donc je bloque...
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)