HACHEUR/COMPACTEUR PROFESSIONNEL DE FICHIER [WIN32]

Gendal67 Messages postés 627 Date d'inscription mercredi 16 juin 2004 Statut Membre Dernière intervention 24 juillet 2011 - 23 oct. 2004 à 14:17
nepi Messages postés 85 Date d'inscription dimanche 13 juin 2004 Statut Membre Dernière intervention 30 décembre 2007 - 27 oct. 2004 à 12:01
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/27024-hacheur-compacteur-professionnel-de-fichier-win32

nepi Messages postés 85 Date d'inscription dimanche 13 juin 2004 Statut Membre Dernière intervention 30 décembre 2007
27 oct. 2004 à 12:01
Ca marche et c'est bien foutu.
Bravo !

++
[n]epi
cs_Kirua Messages postés 3006 Date d'inscription dimanche 14 avril 2002 Statut Membre Dernière intervention 31 décembre 2008
26 oct. 2004 à 18:30
LZW fournira un meilleur résultat que Huffman.
le dico est créé à la volée.


le vector est réalloué qd tu dépasses la capacité: il faut dc minimiser les opérations (surtout les suppressionsinsertion, c'est une horreur)
cs_dominion Messages postés 230 Date d'inscription mardi 21 janvier 2003 Statut Membre Dernière intervention 15 mai 2008
26 oct. 2004 à 18:17
http://membres.lycos.fr/compressions/lzw.html
Assez clair comme explication...

C'est quand même un peu foutoir comme méthode... On pert pas mal de place pour les plus gros fichiers. Dommage...
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
26 oct. 2004 à 18:10
ce n'est pas la meilleur, c'ets plus nul que huffman, en fait, c'est huffman mais avec un tableau prédéfini...

Zip n'utilisesp as que ça !!!
cs_dominion Messages postés 230 Date d'inscription mardi 21 janvier 2003 Statut Membre Dernière intervention 15 mai 2008
26 oct. 2004 à 18:05
Deux question :
Comment LZW ne peut-il faire qu'un passage ??? C'est beaucoup trop mauvais comme compression alors (oui je sais c'est une des meilleures mais ya un truc que je comprends pas...)

vector est un tableau ? Alors comment la taille peut-elle varier ?
cs_Kirua Messages postés 3006 Date d'inscription dimanche 14 avril 2002 Statut Membre Dernière intervention 31 décembre 2008
26 oct. 2004 à 16:41
LZW ne fait qu'un passage

vector n'utilise pas les listes chaînées mais bien un tableau. pr les listes doublement chaînées, cf. <list>
cs_dominion Messages postés 230 Date d'inscription mardi 21 janvier 2003 Statut Membre Dernière intervention 15 mai 2008
26 oct. 2004 à 00:20
Note : pour le bug, si j'ai bien compris, ton tableau est trop petit c'est ça ? Il existe deux solutions facile, enfin selon moi et certains pouront dire que je ne suis pas vraiment la science infuse...

1. Liste chainées : un peu comme string qui est un tableau de char à taille variable, le principe est de donner à une valeur un pointeur sur la valeur suivante.
Plus d'infos : http://lab.erasme.org/liste/

2. Utiliser les vectors : pour moi la manière la plus simple, bien que cela fait longtemps que je ne l'ai plus utilisé. C'est inclus à la STL donc portable, et ça fonctionne avec les listes chainées.

Avec ces deux systèmes, plus de contrainte de place, hormis celle que possède ta mémoire vive (logique...). À n'utiliser toutefois que de facon très précise car plus lent et moins clair (je trouve). Mais dans ton cas la 2e méthode est parfaite...
cs_dominion Messages postés 230 Date d'inscription mardi 21 janvier 2003 Statut Membre Dernière intervention 15 mai 2008
26 oct. 2004 à 00:03
En général, les compressions les plus efficaces doivent parcourir deux fois le fichier, simplement parce que, comme ça, le programme connait la chaine qui apparait le plus souvent. Du coup, il code celle-là de façon à ce qu'elle prenne le moins de place...
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
25 oct. 2004 à 11:08
huffman, c'est pas vraiment compliqué, mais le truc c'est qu'il ne peut pas s'appliquer sur des flus, seulement des fichers, car il faut deux lectures (une pour établir les correspondances, l'autre pour compresser réellement.)

Zip a moins que je ne me trompes, c'ets huffman + autre chose + encore autre chose + lzw et lzw.
Gendal67 Messages postés 627 Date d'inscription mercredi 16 juin 2004 Statut Membre Dernière intervention 24 juillet 2011 2
24 oct. 2004 à 22:25
Merci merci Kirua, je suis entrain de les lire et ils sont cools, au moins ça explique! :-) pis il y aussi des exemples! merci, vais incorporer ça +tard dans mon hacheur si j'y arrive!!! ;-)
cs_Kirua Messages postés 3006 Date d'inscription dimanche 14 avril 2002 Statut Membre Dernière intervention 31 décembre 2008
24 oct. 2004 à 18:04
Huffman c'est vraiment pour le plaisir de coder l'algo parce qu'il est amusant, mais c'est pas le plus efficace. Enfin, si comme moi ce qui t'importes c'est d'apprendre des nouveaux algos, fonce. Voici qq docs:

http://www.howtodothings.com/showarticle.asp?article=313
http://tcharles.developpez.com/Huffman/

j'ai trouvé ça sur google, mtnt... si tu cherches un peu, tu peux trouver plein de doc. j'ai essayé de trouver des articles avec une infographie potable.
Gendal67 Messages postés 627 Date d'inscription mercredi 16 juin 2004 Statut Membre Dernière intervention 24 juillet 2011 2
24 oct. 2004 à 17:58
oui, c'est une excellente idée ! Merci à vous 2 ! :-))
J'y avais pas pensé... Huffman ? Tu pourrais me dire ou je peux avoir des infos ? parce que je ne m'y connait pas en compression :(

Merci d'avance!

Gendal67, à votre service !
cs_Kirua Messages postés 3006 Date d'inscription dimanche 14 avril 2002 Statut Membre Dernière intervention 31 décembre 2008
24 oct. 2004 à 13:38
si tu veux exploiter ce programme, je te conseille d'aussi coder un algorithme de compression.

pour un algo facile qui sera globalement ... honorable, mais loin derrière le zip (LZW), tu as Huffman. C'est très amusant à coder, promis :)

pour une vraie compression d'excellente qualité, le mieux est encore de récupérer la librairie portable ZLIB, qui fait des compressions merveilleuses, mais faudra apprendre à utiliser la lib.
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
23 oct. 2004 à 14:45
du calme, je ne t'agresse pas, ni toi ni personne.

fichiers:
CreateFile, ReadFile, WriteFile, SetFilePointer, SetEndOfFile, CloseHandle.

Parcours disque:
FindFirstFile, FindNextFile.

Jette un oeil dans les sources, tu en trouveras de nombreux exemples.
Gendal67 Messages postés 627 Date d'inscription mercredi 16 juin 2004 Statut Membre Dernière intervention 24 juillet 2011 2
23 oct. 2004 à 14:38
fo croire que non, même pas un avertissement en +...fo dire aussi que c'est inutile ;-))

Pour les includes C/C++ tel que io.h etc..c parce que je suis largement débutant en Win32, c'est tout! On est pas tous aussi forts que toi...

Sinon, il y a aussi du bon dans ce code ou tout est de travers ? Non, c'est pour savoir si j'ai bien fait de poster cette source ou si j'aurais mieux fait de la garder pour moi.

Allez @++ tous!
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
23 oct. 2004 à 14:23
Salut,

marquee WIN32 ta source, alors que font ici:
#include <stdio.h>
#include <dirent.h>
#include

BOOL OpenProcedure(...) sans retour valeur, ton compilo ne dit rien ?
Gendal67 Messages postés 627 Date d'inscription mercredi 16 juin 2004 Statut Membre Dernière intervention 24 juillet 2011 2
23 oct. 2004 à 14:17
ben voila, lachez vos comm' :p
Rejoignez-nous