COMPRESSION / DECOMPRESSION A PARTIR DU SDK LZMA DE 7ZIP ( MULTI FICHIER )

Signaler
Messages postés
7
Date d'inscription
vendredi 28 septembre 2007
Statut
Membre
Dernière intervention
15 octobre 2007
-
cs_Roulito
Messages postés
1
Date d'inscription
lundi 23 février 2004
Statut
Membre
Dernière intervention
4 mai 2008
-
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/43866-compression-decompression-a-partir-du-sdk-lzma-de-7zip-multi-fichier

cs_Roulito
Messages postés
1
Date d'inscription
lundi 23 février 2004
Statut
Membre
Dernière intervention
4 mai 2008

Bonjour.

J'ai repris dans VS 2005 ton projet.
La compilation se passe normalement.
J'ai tenté de créer une archive (avec le projet de demo) et même s'il n'y a pas d'erreur, le logiciel 7-Zip ne peut pas lire cette archive. Est-ce normal ?
Comment peut-on corriger cela ?
Seul le programme que tu as fait permet de relire correctement cette archive.

Roulito
JossGP
Messages postés
7
Date d'inscription
vendredi 28 septembre 2007
Statut
Membre
Dernière intervention
15 octobre 2007

Hi, Vince_02

Thank you for answer.

I want to inform you about another change i made.
private UInt32 ReadLeUInt32()
{
uint Number;
uint item;
Number = ReadLeByte();
for (int i = 1; i < 4; i++)
{
item = ReadLeByte();
Number = (item << 8*i ) | Number ;
}
return Number;
}
This was necessary to read correctly a UINT number without truncation.
After that all take place in the right way.

I found very interesting your idea to add an error journal ,because it can help us to check if everything is went ok. Please inform me when you have news bout it.

Giorgio
JossGP
Messages postés
7
Date d'inscription
vendredi 28 septembre 2007
Statut
Membre
Dernière intervention
15 octobre 2007

Hi, Vince_02

Thank you for answer.

I want to inform you about another change i made.
private UInt32 ReadLeUInt32()
{
uint Number;
uint item;
Number = ReadLeByte();
for (int i = 1; i < 4; i++)
{
item = ReadLeByte();
Number = (item << 8*i ) | Number ;
}
return Number;
}
This was necessary to read correctly a UINT number without truncation.
After that all take place in the right way.

I found very interesting your idea to add an error journal ,because it can help us to check if everything is went ok. Please inform me when you have news bout it.

Giorgio
Vince_02
Messages postés
33
Date d'inscription
dimanche 15 mai 2005
Statut
Membre
Dernière intervention
14 janvier 2016
2
OK, je suis comme toi, je sais lire l'anglais, mais l'écrire, c'est une autre histoire ...

Pour l'erreur "OutOfRangeMemory" je pense que c'est du à la class "SevenZip", le taux de compression doit être trop élevé, enfin c'est une supposition et non une certitude.
(Plus le taux est élevé, plus cela prend de mémoire.)

Pour les 2 solutions que tu m'as apporté, je ne comprends pas pourquoi cela ne fonctionne pas pour toi, personnellement je n'ai jamais eu de problème sur ces 2 fonctions. Mais bon, j'en tiens compte pour la prochaine mise à jour.

Sur la prochaine Mise à jour, j'ai ajouté pas mal de fonction utils comme créé un SFX, un système de "Journal d'erreur" et quelque correction, ceux que tu as apporté seront inclus.
par contre je ne saurais te dire quand, actuellement j'ai moin de temps a consacré a tout ça ...