yop
quelques questions :
1.
quand on a :
HANDLE handle;
char *ptrFILE;
SYM_ENTRY *sym;
handle = HeapAlloc(16);
if (!handle) return;
sym = DerefSym(SymAdd(SYM_STR("tuto")));
if (!sym) {HeapFree(handle); return;}
sym->handle = handle;
ptrFILE = HeapDeref(handle);
*(short*)ptrFILE = 14;
ptrFILE[10] = 0;
strcpy(ptrFILE+11,"TUT");
ptrFILE[15]=OTH_TAG;
(tuto de Benji sur TI-Gen)
Une fois le fichier crée, on a bien 8 octets disponibles pour écrire quelque chose ?
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+-----------+------+
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10|11 |12| 13|14 | 15 |16 |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+-----------+------+
| taille | données | 0 | T | U | T | 0 |OTH_TAG| 0(?) |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+-----------+------+
| 2 | 8 | 1 | 3 | 1 | 1 | 1 |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+-----------+------+
2. Je veux créer un fichier qui stockera les données des sprites que j'utilise :
le fichier est sous cette forme :
taille : 2 octets
nombre de données à lire par sprite (lignes) : 1 octet
données : s octets
autres : 0 // SPR // 0 // OTH_TAG // 0 (?) : 7 octets
soit :
+---+---+---+---+---+---+---+---+-----+------+------+----+------+------+-----+-----------+------+
| 0 | 1 | 2 | 3 | 4 | ... | s+1| s+2 | s+3 |s+4 | s+5 | s+6 | s+7 | s+8 | s+9 |
+---+---+---+---+---+---+---+---+-----+------+------+---- +-----+------+------+-----------+------+
| taille | | données | 0 | T | U | T | 0 |OTH_TAG| 0(?) |
+---+---+---+---+---+---+---+---+-----+------+------+---+---+---+-----+------+-----------+------+
| 2 | 1 | s | 1 | 3 | 1 | 1 | 1 | 1 |
+---+---+---+---+---+---+---+---+-----+------+------+---+---+---+---+--------+------+---+-------+
La taille du fichier est donc bien de s+9 octets ?
J'ai essayé ce code
SYM_ENTRY *sym = SymFindPtr(SYM_STR("spr",0);
if (!sym)
{
HANDLE handle;
char *ptrFILE;
handle = HeapAlloc(s+9);
if (!handle) return;
sym = DerefSym(SymAdd(SYM_STR("spr")));
if (!sym) {HeapFree(handle); return;}
sym->handle = handle;
ptrFILE = HeapDeref(handle);
*(short*)ptrFILE = s+7;
ptrFILE[s+3] = 0;
strcpy(ptrFILE+s+4,"TUT");
ptrFILE[s+8]=OTH_TAG;
}
... //écriture des données ici, c'est un tableau de [i]char[/i]
mais ça me donne des résultats bizarres dans le Var-Link...
3.Comment créer un tableau de char à dimension
s, s étant une variable de type short ?
comme ça :
char *spr = (char*) malloc(s*sizeof(char));
?
et une fois le tableau crée, comment pouvoir récupérer les données avec memcpy() ?
parce que
... //suite du code précédent
memcpy(spr, ptrFILE + 4, ptrFILE + 3);
ne me donne pas les bonnes données ; sinon, y a toujours moyen de le faire avec une boucle for, "à la main", mais j'préfère éviter
voilà voilà, merci pour les éventuelles réponses ^^
(désolé pour le décalage pour les tableaux ....)