Le but primordial pour moi est de faire simple.
L'idéal serait pour moi de faire :
extract(fichier zip, fichier à extraire);
SDL_FileOpen(...)
Si je trouve un truc qui fait ça, je prends de suite

Zerosquare (./138) :
Ah, si seulement il existait la directive INCBIN en C...
Sous Windows tu peux utiliser les ressources pour inclure tes fichiers proprement et y accéder par nom ou par index, mais ce n'est pas portable, donc ça ne t'aidera pas.
Zerosquare (./145) :
(et ça doit être pour la même raison qu'on ne peut généralement pas effacer un programme tant qu'il tourne).
Folco (./148) :
Pour retrouver mes données dedans ("à quel offset ai-je foutu le sprite machin ?"), si j'étais sur TI, j'aurais fait une dll, avec un export à chaque début de fichier :
fichier@0000 -> pointe sur le fichier 1fichier@0001 -> pointe sur le fichier 2
Là, je vais devoir me démerder à faire un fichier binaire, avec les sprites écrits en brut, précédés par une table (typiquement : (int) Id sprite, (int) size, [...], [sprite 1], [sprite 2]
Folco (./152) :
http://ymettier.free.fr/articles_lmag/lmag22/lmag22.html
Ca a l'air bien foutu en effet. Mais plutôt que de la compression, c'est de l'archivage qu'il me faut. j'ai pas réussi à savoir si tar est porté sous Win (sous Mac OS ça m'étonnerais pas ?).
Kevin Kofler (./153) :Merci, je ne connaissais pas.
#define import_binary(filename,symname) asm(".globl "#symname"\n"#symname":\n\t.incbin \""filename"\"") (cf. TIGCCLIB) marche très bien si ton GNU as est suffisamment récent.
Kevin Kofler (./153) :Mais Folco n'utilise pas Qt dans son programme, et je doute qu'il s'y mette juste pour ça.
Qt fournit un système de ressources portable.
Kevin Kofler (./153) :Je ne parlais que de Windows. Et "pourri", c'est ton point de vue : c'est un choix de conception différent. La solution dont tu parles produit des situations ambigües (tu effaces des fichiers, mais l'espace disque disponible n'augmente pas, etc.). Moi je considère que quand on essaye d'effacer un fichier alors qu'il est en cours d'utilisation, c'est déjà qu'il y a un problème.
Seulement sous un OS pourri... Sous GNU/Linux, tu peux effacer un fichier quand tu veux, il sera rendu immédiatement indisponible pour les nouvelles ouvertures, et il sera automatiquement dégagé (c'est-à-dire, les blocs réservés pour lui seront automatiquement libérés) quand le dernier logiciel qui avait ouvert le fichier le ferme.
Zerosquare (./154) :
Moi je considère que quand on essaye d'effacer un fichier alors qu'il est en cours d'utilisation, c'est déjà qu'il y a un problème.
Folco (./152) :
http://ymettier.free.fr/articles_lmag/lmag22/lmag22.html
Ca a l'air bien foutu en effet. Mais plutôt que de la compression, c'est de l'archivage qu'il me faut. j'ai pas réussi à savoir si tar est porté sous Win (sous Mac OS ça m'étonnerais pas ?).
{ nom_fichier: char[], taille_fichier: uint32, données_fichier... }
PpHd (./158) :
Cf. http://www.winimage.com/zLibDll/minizip.html
arc = unzOpen ("MyArchive.zip"); strcpy (FileName, ""); do{ unzGetCurrentFileInfo (arc, NULL, &FileName, sizeof (FileName), NULL, 0, NULL, 0); if (strcmp (FileName, WhatIWant) == 0) { // Found unzOpenCurrentFile(arc); unzReadCurrentFile (arc, &Buffer, BufferLen); unzCloseCurrentFile (arc); break; } } while (unzGoToNextFile (arc) != UNZ_END_OF_LIST_OF_FILE); unzClose (arc);
Brunni (./168) :
./163> Si tu veux permettre le nommage de tes fichiers (c'est quand même plus pratique que des numéros), une solution bornée à n opérations c'est tout à fait correct. En C, tu peux difficilement faire mieux.
Folco (./175) :
Oué bon. J'ai bookmarké vos liens, j'y reviendrai après, je vais faire autre chose pour le moment.
Jyaif (./176) :
surtout que d'après ton historique tu as 0% de chance de release ton projet.
Folco (./175) :
ps ->>> Je vois toujours pas pourquoi tu te casses autant le cul
Quand on sait pas bien faire, tout parait dur