HACHEUR/COMPACTEUR PROFESSIONNEL DE FICHIER [WIN32]
Gendal67
Messages postés627Date d'inscriptionmercredi 16 juin 2004StatutMembreDernière intervention24 juillet 2011
-
23 oct. 2004 à 14:17
nepi
Messages postés85Date d'inscriptiondimanche 13 juin 2004StatutMembreDernière intervention30 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.
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és12303Date d'inscriptionmardi 10 février 2004StatutMembreDernière intervention30 juillet 201244 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és230Date d'inscriptionmardi 21 janvier 2003StatutMembreDernière intervention15 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és3006Date d'inscriptiondimanche 14 avril 2002StatutMembreDernière intervention31 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és230Date d'inscriptionmardi 21 janvier 2003StatutMembreDernière intervention15 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és230Date d'inscriptionmardi 21 janvier 2003StatutMembreDernière intervention15 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és12303Date d'inscriptionmardi 10 février 2004StatutMembreDernière intervention30 juillet 201244 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és627Date d'inscriptionmercredi 16 juin 2004StatutMembreDernière intervention24 juillet 20112 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és3006Date d'inscriptiondimanche 14 avril 2002StatutMembreDernière intervention31 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:
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és627Date d'inscriptionmercredi 16 juin 2004StatutMembreDernière intervention24 juillet 20112 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és3006Date d'inscriptiondimanche 14 avril 2002StatutMembreDernière intervention31 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és21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 23 oct. 2004 à 14:45
du calme, je ne t'agresse pas, ni toi ni personne.
Jette un oeil dans les sources, tu en trouveras de nombreux exemples.
Gendal67
Messages postés627Date d'inscriptionmercredi 16 juin 2004StatutMembreDernière intervention24 juillet 20112 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és21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 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és627Date d'inscriptionmercredi 16 juin 2004StatutMembreDernière intervention24 juillet 20112 23 oct. 2004 à 14:17
27 oct. 2004 à 12:01
Bravo !
++
[n]epi
26 oct. 2004 à 18:30
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)
26 oct. 2004 à 18:17
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...
26 oct. 2004 à 18:10
Zip n'utilisesp as que ça !!!
26 oct. 2004 à 18:05
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 ?
26 oct. 2004 à 16:41
vector n'utilise pas les listes chaînées mais bien un tableau. pr les listes doublement chaînées, cf. <list>
26 oct. 2004 à 00:20
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...
26 oct. 2004 à 00:03
25 oct. 2004 à 11:08
Zip a moins que je ne me trompes, c'ets huffman + autre chose + encore autre chose + lzw et lzw.
24 oct. 2004 à 22:25
24 oct. 2004 à 18:04
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.
24 oct. 2004 à 17:58
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 !
24 oct. 2004 à 13:38
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.
23 oct. 2004 à 14:45
fichiers:
CreateFile, ReadFile, WriteFile, SetFilePointer, SetEndOfFile, CloseHandle.
Parcours disque:
FindFirstFile, FindNextFile.
Jette un oeil dans les sources, tu en trouveras de nombreux exemples.
23 oct. 2004 à 14:38
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!
23 oct. 2004 à 14:23
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 ?
23 oct. 2004 à 14:17