begin process at 2010 09 06 05:04:31
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Compression & Split

 > ARCHIVAGE EN AUTOEXTRACTIBLE (SELF-EXTRACTOR) AVEC COMPRESSION

ARCHIVAGE EN AUTOEXTRACTIBLE (SELF-EXTRACTOR) AVEC COMPRESSION


 Information sur la source

Note :
10 / 10 - par 7 personnes
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Compression & Split Classé sous :archivage, autoextractible, selfextractor, compression, sfx Niveau :Expert Date de création :23/03/2003 Date de mise à jour :23/03/2003 17:35:47 Vu / téléchargé :10 740 / 1 430

Auteur : Bestiol

Ecrire un message privé
Site perso
Ce membre participe au partage de revenus publicitaires
Commentaire sur cette source (70)
Ajouter un commentaire et/ou une note


 Description

Voilà en gros ce que je comptais faire par la suite quand j'ai sorti mon premier prog' de compression avec la zLib... Je sors enfin mon autoextractible !! J'espère que ça vous plaira !

La source se décompose en deux parties...
1: Le programme extracteur.
C'est dans ce programme que sont stockés les fichiers compressés... Il sert de base pour ensuite pouvoir avoir l'archive autoextractible...

2: L'archiveur
La version que j'ai mise ici est très simplifiée... J'ai rencontré quelques problèmes pour la "vraie" version... Mais le principe est là : l'utilisateur choisit les fichiers à archiver et demande la création du "SFX"... Les fichiers sont compressés un à un et placés dans l'EXE extracteur, qui lui est stocké en ressource dans l'archiveur !

J'utilise pour l'archive un système d'entêtes... Ca peut être intéressant pour ceux qui se demandent comment ça marche... Et bien sûr, compression/décompression des fichiers avec la zLib, fournie avec Delphi !

Source

  • Dans le ZIP...
  • Un répertoire "extracteur" qui contient les sources de... l'extracteur !! Avec également les explications sur le stockage dans l'EXE...
  • Un répertoire "archiveur simplifié", qui contient les sources de l'archiveur et le fichier .res de l'extracteur !
Dans le ZIP...
Un répertoire "extracteur" qui contient les sources de... l'extracteur !! Avec également les explications sur le stockage dans l'EXE...
Un répertoire "archiveur simplifié", qui contient les sources de l'archiveur et le fichier .res de l'extracteur ! 

 Conclusion

Le code est assez commenté, mais si jamais vous avez des questions, y a tout ce qu'il faut sur ce site pour les poser !

Il reste quelques bugs ou trucs pas super... Par exemple, y a un problème avec le répertoire d'extraction par défaut... Il rajoute toujours un caractère en trop !
Et puis le répertoire d'extraction doit obligatoirement exister pour pouvoir extraire l'archive... Je ferai une mise à jour qui enlève ça ! [C'est maintenant fait !]
Enfin, faudra améliorer la gestion de la barre de progression !

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources du même auteur

Source avec Zip COLORATION SYNTAXIQUE AVEC TPARSER !!
Source avec Zip PETITE SCENE EN OPENGL
Source avec Zip DÉCOUPAGE DE FICHIER WAV
Source avec Zip UTILISER UN NUMÉRO DE SÉRIE
Source avec Zip CONCATENATION DE FICHIERS WAV

 Sources de la même categorie

Source avec Zip Source avec une capture UPXHELPER V1.1.1 par Christophe67
Source avec Zip Source avec une capture DELPHI : PROCEDURE SPLIT SIMILAIRE A LA FONCTION EPONYME EN ... par FENETRES
FONCTION SPLIT par crackspider7676
Source avec Zip STREAMZIP par simonpelloquin
Source avec Zip MAKE CAB + CHECKLISTBOX par simonpelloquin

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture UPXHELPER V1.1.1 par Christophe67
Source avec Zip Source avec une capture EASYCOMPRESSJPG V4 - COMPRESSION AVANCÉE D'IMAGES EN JPEG par ni69
Source avec Zip HUFFMAN ADAPTATIF par kingler
Source avec Zip HUFFMAN par kingler
Source avec Zip LEMPEL-ZIV-WELCH par kingler

Commentaires et avis

Commentaire de Bestiol le 23/03/2003 16:54:05

Désolé, j'avais mis un mot de passe au ZIP... Je vais arranger ça !!

Commentaire de DelphiCool le 24/03/2003 19:55:26 administrateur CS

Salut Bestiol

Cool ton source.
Il aurrait etais encore mieux si tu utilisais le monis d'unitées possible dans ton extracteur.
Car un extracteur de 180 Ko c'est un peu lourd quand meme.

Commentaire de Bestiol le 25/03/2003 13:47:56

Salut Delphicool !!

Pour la taille de l'extracteur, je sais !! Mais le but du source n'était pas de faire l'extracteur le plus petit possible !
Une version viendra, avec cette amélioration !

Commentaire de CleyFaye le 28/03/2003 18:51:58

Bah je sais pas pour les autres versions mais dans delphi 5 quand le code est optimisé (options du projet ) et qu'il n'y a pas les infos de deboggage(toujours dans les options), le compilateur ne compile que le code utilisé, ce qui veut dire que mème si il y a des unitées en trop, leur code ne sera pas forcément compilé...

Commentaire de DelphiCool le 28/03/2003 19:43:31 administrateur CS

CleyFaye, je n'ai pas dit des unitées en trop, mais des unitées trop lourdes comme "Forms" par exemple

Commentaire de CleyFaye le 28/03/2003 19:45:00

ah dsl :p

Commentaire de CloudStrife le 17/10/2003 23:29:42

Pas mal ! vachement pratique pour faire une installation de logiciel !
parcontre y a un bug... quand tu entre un chemin, à la décompression il met un "" juste àpres le chemin (et j'ai pas trouver pourquoi), et ça fait qu'il faut modifer à la main... pour un logiciel d'install c'est un peu chiant...

Commentaire de Bestiol le 18/10/2003 00:32:37

Merci !!

Pour le bug avec le chemin, j'avais remarqué, et j'ai même déjà eu la remarque...
Je n'ai jamais compris pourquoi ça fait ça, alors que les formats sont bien définis à l'identique entre l'extracteur et l'archiveur...

J'avais modifié chez moi le prog pour supprimer automatiquement le dernier caractère du chemin par défaut... méthode barbare mais comme à tous les coups il y est, à tous les coups ça marche ! =0)

Voilà voilà !
@+
Bestiol.

Commentaire de CloudStrife le 18/10/2003 22:45:29

et c'est quoi le changement a apporter pour que ça marche ?

Commentaire de Bestiol le 19/10/2003 21:45:49

ah désolé... Bah c'est tout bête...
Quand dans l'extracteur le champ RepDft est mis à jour dans le OnCreate de la fiche, il suffit de faire aller la boucle à length(...) - 1 !

>>for i := 0 to Length(Princip.RepDft) - 1 do
    edDir.Text := edDir.Text + Princip.RepDft[i];

Logiquement ça devrait marcher... mais je vois que j'ai carrément remplacé la boucle par "edDir.Text := Copy(Princip.RepDft, 0, SizeOf(Princip.RepDft));"
Et si ça ne fonctionne pas, suffit de mettre SizeOf(...) - 1 !

Bonne prog' !
Bestiol.
PS: j'ai as l'air sûr de moi dans ce commentaire, c'est parce que ça fait des mois que j'ai pas touché à cette source !

Commentaire de SiZiOUS le 17/11/2003 18:58:33

Super, franchement, chapeau Bestiol :)

Commentaire de Bestiol le 17/11/2003 20:16:07

Merci bien !!

ça fait plaisir de voir que ça plaît ! (petite répétition mais bon, vous allez pas me le reprocher, si ?! :o) )

@+ !
Bestiol.

Commentaire de pcurie le 07/06/2004 14:38:54

salut j'ai essayé ton prog! franchment super ! sauf que j'arrive pas a modifier extracteur.res ! je debute en delphi , et je ne sais pas comment generer le .res j'ai essayer de prendre le .exe et de le renommé en .res mais j'ai une erreur comme quoi la ressource est en 16bits ....

Si tu as une idée d'ou vient le pb je suis preneur

Commentaire de Bestiol le 07/06/2004 19:45:17

Merci merci :oD

pour le .res en fait il faut le recompiler !
Je sais plus si j'ai laissé le fichier .rc dans le zip. Car c'est un fichier rc qu'il faut créer avec le bloc-notes... Tu as normalement des tutoriaux pour apprendre à faire ça...

Dont un de Delphicool sur developpez.com normalement (je sais c'est un site concurrent mais bon faut bien donner de bonnes références :P)

Voilà si jamais y a un pb redemande ;o)
++
bestiol.

Commentaire de pcurie le 08/06/2004 08:48:45

c bon ca marche ! je vais expliquer au cas ou d'autre pourraient bloquer comme moi, dans le type de ressource il faut mettre RCDATA (c de la que venait mon pb) et en name il faut mettre EXTRACT voila merci pour ton aide bestiol j'y etais presque arrivé et tu m'as donné l'idee lol!
et sinon pour le caractère suplementaire c normal les string ou char commence a 0 et se termine toujours a length-1
en tout cas merci!!

euh g pas l'impression que les sous répertoires marchent as tu fait une nouvelle version? sinon je le ferai

Commentaire de pcurie le 08/06/2004 16:35:09

c bon j'ai fini  la gestion des sous repertoires merci encore pour cette tres bonne source! simple et efficace tout ce que j'aime ;)

Commentaire de Bestiol le 09/06/2004 08:11:42

ben écoute y a pas de quoi !!

Ravi de faire ton bonheur ! :o)
Mais c'est vrai que j'y ai passé du temps, pour que ça fonctionne correctement !

Enfin surtout n'oublie pas de m'envoyer un ZIP que je mette le tout à jour... A moins que tu préfères reposter toi-même une source ?

>>bestiol@cario.fr

++
Bestiol.

Commentaire de ActiveX le 22/02/2005 17:06:01

Je voudrais changer l'icone et mettre un icône d'installation comment je peux m'y prendre.

tu as crée un fichier extracteur.res

et on trouve a quel endroit ce fichier extracteur.rc

à part ça très bon travail très utile j'adore.

ActiveX.

Commentaire de Bestiol le 22/02/2005 19:15:19

Salut !

Il me semblait avoir inclus le fichier extracteur.rc...

Ce n'es tpas si grave, il ne contient qu'une ligne :
extract RCDATA extracteur.exe

(si je ne me trompe pas car j'ai remanié cette source récemment)

Donc pour l'icône d'install tu la changes dans les options du projet extracteur.dpr, tu recompiles et tu refais le dpr, mais je pense que tu avais saisi le truc ! ;o)

Bonne prog' !
Bestiol.

Commentaire de ActiveX le 22/02/2005 22:47:55

J'ai fais ce que tu m'as dit oui c'est tout-a-faitnormal pour changer l'icon du programme en soit.

Mais ce dont je voulais dire c'est l'icone du nouveau fichier compressé en exécutable il contient toujours ton icone personnel. et c'est ça que je veux mette l'icone d'install.

voila peux tu m'éclairer.

merci beaucoup a part ça tu fais du bon boulot.

ActiveX

Commentaire de Bestiol le 22/02/2005 23:04:14

merci pour le bon boulot ! ^^

quoi qu'il en soit, si tu changes l'icone de l'extracteur, que tu recompiles le fichier .res à partir de ce nouvel extracteur et qu'ensuite tu recompiles le "lieur" (chose que je n'ai pas mentionnée, dsl), tout devrait être avec ta nouvelle icône ! :)

Le tout est de recompiler le lieur avec le nouveau extract.res ! ;o)

Commentaire de ActiveX le 23/02/2005 00:02:18

Et bien voila tout est parfait merci Bestiol.

je te vaudrais ça.

bonne prog.

ActiveX.

Commentaire de Bestiol le 23/02/2005 01:26:55

Pas de quoi, je t'en prie ! :o)

Je devrais normalement écrire un tutoriel complet sur cette source dans les semaines à venir (oué je sais, je prévois loin ! :op).
Il est possible que j'apporte des améliorations, qui sait ! ;o)

Bonne prog' ! ^^
Bestiol.

Commentaire de cirec le 06/12/2005 10:39:53 administrateur CS

Euh ... Mmmm ... Wouaou !!!
j'en pert mes mots, je ne regrette qu'une chose c'est d'avoir mis presque 3 années pour tomber sur ce code et ça fait mal.;-)

Super, génial, très instructif... et pour ne pas répéter
ce que les autres ont déjà dit Bon boulot, Good Job...

Je donnerais bien 20/10 mais bon 10 étant le max il faudra s'en contenter ^_^

@+
Cirec

Commentaire de cirec le 06/12/2005 12:31:42 administrateur CS

avec quel version de Delphi as-tu compilé l'extracteur ???
parce que je l'ais recompilé à cause du bug caractère en trop et avec D9 il fait 460 Ko et avec D4 359 K0

@+
Cirec

Commentaire de Bestiol le 06/12/2005 13:20:40

Salut Cirec !

Merci pour tes commentaires, ça fait plaisir de voir que même presque 3 ans après sa publication, cette source sert toujours ! :o)

A l'époque, j'ai du compiler ça avec Delphi 6 ou 7 perso.

Commentaire de cirec le 06/12/2005 13:26:52 administrateur CS

ça y est j'ai compris l'extracteur à été compressé avec utilitaire du style UPX n'est ce pas ?

je l'ai fait avec UPX et là il a plus que 145,5 Ko et ça fonctionne toujours ^_^

@++
Cirec

Commentaire de Bestiol le 07/12/2005 20:45:10

ah c'est possible que je l'aie compressé oui :o)
Ca doit être écrit quelque part au début de l'exe si tu regardes avec un éditeur hexadécimal ^^

Bonne prog' !

Commentaire de hafou le 09/12/2005 16:34:53

ce code est vraiment bon , seulement après l'avoir compilé j'ai le message suivant :  CompilersDefines.inc ?  que dois je faire ?

Commentaire de Bestiol le 09/12/2005 16:39:22

tu as juste "CompilersDefines.inc" ?? Tu n'as pas un message plus complet ?
peux-tu également préciser ta version de Delphi etc., ce fichier ne correspond à aucun des miens...

Commentaire de hafou le 09/12/2005 16:46:45

ma version est Delphi7. voilà et c'est tout comme message reçu. Merci.

Commentaire de Bestiol le 09/12/2005 16:58:55

:os

Aucune info au sujet de ton erreur sur le net, c'est étrange... Utilises-tu des experts ou autres choses de ce genre qui pourraient interférer sur la compilation ??

Je suis désolé je ne vois pas vraiment comment te venir en aide, cette erreur est on ne peut plus bizarre...

Commentaire de hafou le 09/12/2005 17:11:15

Je viens juste de relancer la compilation mais cette fois ci sous XP2000  et ça marche comme bonjour. Au fait j'avais utilisé Win98SE prélablement pour avoir cetter erreur . Merci.

Commentaire de hafou le 09/12/2005 17:11:19

Je viens juste de relancer la compilation mais cette fois ci sous XP2000  et ça marche comme bonjour. Au fait j'avais utilisé Win98SE prélablement pour avoir cetter erreur . Merci.

Commentaire de Rudy3212 le 02/02/2006 19:17:41

Super Source bravo

Commentaire de Bestiol le 02/02/2006 20:52:13

Merci :)

J'ai republié cette source sur mon espace olance.developpez.com avec un projet un peu plus structuré et un fichier explicatif ;)

Commentaire de Rudy3212 le 02/02/2006 21:06:42

heu ta un problème sur l'archive que ya sur olance.developpez.com, ben il manque des fichiers genre CRC32.dcu... mais en les piquant de delphifr et en les mettant sa marche, afin voila c'était pour te le dire :)

Commentaire de Rudy3212 le 02/02/2006 21:09:31

sinon ya pas la prose en charge des sous répertoires, il ta pas filer sa source modif pcurie ?

Commentaire de hafou le 03/02/2006 09:50:04

En lançant la compilation du programme je reçois le message suivant :

      unsatisfied Forward or external declaration "Adler32" ?  

  Pouvez vous m'orienter ?   merci.  

Commentaire de Bestiol le 03/02/2006 13:21:06

@Rudy: non pcurie ne m'avait pas fourni son code... J'avais oublié ce détail des sous-répertoire. Je vais voir à l'ajouter dans la semaine qui arrive (ou celle d'après) et peut-être faire un tuto complet là-dessus !

@Hafou: je ne vois vraiment pas d'où cette erreur peut venir... Normalement elle survient quand une déclaration de procédure a été faite, mais pas son implémentation. Mais jamais j'aurais appelé une fonction "Adler32", ni fourni un code qui ne compile pas !
Ca doit venir de quelque chose chez toi.

Commentaire de cirec le 03/02/2006 13:39:03 administrateur CS

@Hafou
ton problème provient de la ZLib
{$IFDEF MSWINDOWS}
{$L deflate.obj}
{$L inflate.obj}
{$L inftrees.obj}
{$L trees.obj}
{$L adler32.obj} <<<<<<<<<<<<<<<<<
{$L infblock.obj}
{$L infcodes.obj}
{$L infutil.obj}
{$L inffast.obj}

il faut installer la ZLib (Zip library) dans certaine version de Delphi elle ne se met pas automatiquement mais elle doit se trouver sur le CD fait une recherche de ZLib.pas dans le répertoire d'installation de ton Delphi où dans le CD si non sur le net elle est disponible gratuitement

@+
Cirec

Commentaire de Bestiol le 03/02/2006 13:44:50

Merci Cirec d'avoir trouvé le problème, c'est quelque chose qu'il faudra que je précise :)

(je pensais qu'elle était installée d'office)

++
Bestiol.

Commentaire de Rudy3212 le 03/02/2006 18:18:29

Sa serait vraiment cool avec la gestion des sous-répértoire, je pense que c'est preque un des dèrniers truc qu'il manque, parceque c'est vraiment une superbe source

Commentaire de Bestiol le 03/02/2006 18:27:10

merci :o)

Ce qui manque aussi, c'est un extracteur réellement petit, donc en assembleur ou éventuellement en C/C++, à voir...
Je vais jeter un oeil à tout ça ;o)

Commentaire de cirec le 03/02/2006 18:46:27 administrateur CS

Où fait avec les Api j'ai déjà fait des testes et c'est possible mais il y a du boulot

@+
Cirec

Commentaire de Bestiol le 03/02/2006 18:49:30

Oui, j'ai déjà eu à faire ça, c'est sûr c'est pas marrant ^^
A vrai dire c'est toujours de l'appel d'API, avec un langage ou un autre ! (pour faire un truc vraiment minimal)

Commentaire de cirec le 03/02/2006 18:51:43 administrateur CS

oui c'est vrai c'est que la syntaxe qui change d'un language à un autre

Commentaire de Bestiol le 03/02/2006 18:53:20

Non la différence aussi c'est que malgré tout, un programme C/C++ ou asm restera plus petit qu'un programme Delphi :(
(Enfin je pense j'ai pas fait de conparatif)

Commentaire de cirec le 03/02/2006 18:56:33 administrateur CS

En api je ne pense pas quand un prog fait entre 12 et 17 Ko tout mouillé en Delphi je pense que le C/C++ ne fait pas beaucoup mieux à voir

Commentaire de Bestiol le 03/02/2006 18:58:16

je testerai à l'occasion :)

Commentaire de cirec le 03/02/2006 19:01:10 administrateur CS

je ne pratique pas le C/C++ mais tiens moi au courant de tes découvertes c'est toujours interressant de savoir

Commentaire de Bestiol le 03/02/2006 19:03:16

Y a pas de souci ;o)

Commentaire de Rudy3212 le 03/02/2006 19:03:28

je te conseille de résté en delphi, car tout reprogrammer n'est pas une bonne idée, et 2 après il fera moins de 50Ko et en plus tu peut le packté avec UPX mais Upack comprésse encore plus.

PS : J'ai mis 10/10 j'avait oublié :)

Commentaire de Bestiol le 03/02/2006 19:05:56

thx ^^

Je ne compte faire que l'extracteur en C/C++ ou assembleur, si ça apporte quelque chose par rapport à Delphi.
La partie "archiveur" restera en Delphi, elle n'a pas besoin d'optimisation :)

Commentaire de cirec le 03/02/2006 19:08:45 administrateur CS

Attention compresser avec UPX ou tout autre packer c'est bien à condition qu'il n'y ait qu'une fenêtre dans l'application en question si non au finale elle occupera plus de place en mémoire
il faut le savoir les packer d'exe ont aussi des désavantages

Commentaire de Bestiol le 03/02/2006 19:13:22

Oui tout à fait ;)
Mais packer un EXE de 17ko je sais pas trop si ça vaut le coup ! C'est la taille d'un exe compilé avec ce code :

program extracteur;

uses
  Windows;

begin

end.

L'ajout de Classes fait monter à 76ko, donc je devrai me passer des streams ^^

Je vous tiens au courant de tout ça !

Commentaire de BruNews le 03/02/2006 19:16:07 administrateur CS

Exe (avec fenêtre) de 5 Ko en C, exemple ici:
http://www.cppfrance.com/code.aspx?ID=33730

Commentaire de Bestiol le 03/02/2006 19:33:09

merci :)

Commentaire de Rudy3212 le 26/04/2006 13:42:05

alors bestiol a quand une new version hein :)

Commentaire de Bestiol le 26/04/2006 13:57:53

lol :o)

Ben en fait j'en ai une qui est presque prête, mais j'ai un souci complètement stupide qui me bloque complètement : mon TMemoryStream.Size renvoie 0 alors que le code est identique à cette "vieille" version :os

enfin bref ça a fini par me casser les pieds et comme j'ai d'autres choses à faire, c'est un ptit peu en standby pour le moment ;o)

++
Bestiol.

Commentaire de asgard_guigui le 02/03/2007 11:39:57

Salut,

Super source, fonctionne bien... Felicitations a Bestiol!!!
Juste un petit souci au niveau de la gestion des sous repertoires. Quelqu'un a la source complete?

Merci

++
Fred

Commentaire de Rudy3212 le 02/03/2007 19:53:43

Bestiol tu pourait pas me donner tes sources qui renvoie le TMemoryStream.Size a 0 ?
par mail où autre ?

Commentaire de Bestiol le 03/03/2007 01:33:01

Envoie-moi ton mail par mp !

J'ai voulu reprendre le code avec Delphi 7 pour voir si c'est un problème de Delphi 2006, mais j'ai des erreurs de compilation....
Jveux bien t'envoyer les sources mais je ne te garantis pas que j'ai pas introduit des problèmes en bidouillant ^^

Commentaire de asgard_guigui le 05/03/2007 15:40:02

Salut,

Toujours pas de reponse alors j'ai essaye de gerer les sous repertoires. Voici les modifications que j'ai tente de faire :

Je pense que dans la partie archiveur il faut modifier le code original :
   FillChar(SousRep, SizeOf(SousRep), #0);  //met la variable sousRep a vide
par le code suivant :
   StrPCopy(SousRep, 'Nom_du_sous_rep');

Ensuite dans la fonction Decompresser du fichier OpFichiers.pas de l'extracteur, il faut creer le sous repertoire en question par une instruction du type (en prenant soin de s'etre placer sous le repertoire de destination par l'instruction ChDir):
   CreateDir('NewSubDir');
avant de creer le fichier par l'instruction :
   DestF := TFileStream.Create(Dest, fmCreate);

J'ai essaye cela et ca ne fonctionne pas. L'archivage se fait correctement, mais a l'extraction, les sous repertoires ne se creent nulle part et l'extraction me genere des erreurs de type 'Violation d'acces a une adresse'.

Merci si vous avez des infos a ce sujet,

A++

Bonne continuation

Commentaire de Bestiol le 05/03/2007 16:46:26

Salut,

je pense qu'une méthode assez simple pour gérer les sous-répertoires est la suivante :

-> Lors de la création de l'archive, enregistrer dans un champ "Nom" le nom complet du fichier, relativement à la racine de l'archive.

Exemple:
racine
|
|---Rep1
|    |--Fichier1
|    |---Rep2
|         |--Fichier2
|         |--Fichier3

>> L'enregistrement correspondant à Fichier1 aura pour champ Nom la valeur 'Rep1\Fichier1'
>> Les enregistrements correspondant à Fichier2 et Fichier3 auront pour champ Nom la valeur 'Rep1\Rep2\Fichier2' et 'Rep1\Rep2\Fichier3'

-> Lors de la décompression, créer au besoin le répertoire de destination correspondant à la racine de l'archive, puis pour chaque fichier, faire un ForceDirectories(ExtractFilePath(Racine + Nom)) puis créer le fichier dans l'arborescence ainsi générée.

Exemple : L'archive est décompressée dans Racine = 'C:\Temp\'. (Utiliser IncludeTrailingBackSlash ou IncludeTrailingPathDelimitor pour s'assurer qu'il y a bien le '\' à la fin)

Le Fichier1 doit donc avoir pour chemin de destination 'C:\Temp\Rep1\Fichier1'

ExtractFilePath(Racine + Nom) correspond à ExtractFilePath('C:\Temp\' + 'Rep1\Fichier1'). Cela renverra 'C:\Temp\Rep1\'.
ForceDirectories('C:\Temp\Rep1\') crée tous les répertoires non existant du chemin passé en paramètre. Dans notre cas, Rep1 est créé sous Temp.
L'extraction peut continuer dans le répertoire 'C:\Temp\Rep1\' :)

Vala vala ;)
Bonne prog' !
Bestiol

Commentaire de asgard_guigui le 06/03/2007 12:09:44

Merci pr tes infos Bestiol.

Mais en fait j'ai un probleme au niveau de la ressource, je pense. Lorsque je modifie l'extracteur, lors de l'extraction de l'archive cree, c'est un autre extracteur qui se lance (un non modifie).

J'ai pourtant lu les methodes sur les fichiers ressources et j'ai fait comme suit :
- Modification du code de l'extracteur.
- Creation de l'exe de l'extracteur
- Compilation du fichier extracteur.rc contenu dans l'archiveur avec la commande brcc32 'chemin complet de la ressource extracteur.rc'
- Puis creation de l'executable archiveur.

Ptite question supplementaire : dans le fichier .rc, c'est bien cela 'extract RCDATA extracteur.exe'

Mais cela ne fonctionne pas, et la ressource semble utilise un ancien exectutable.

Si tu pouvais me dire la procedure correcte ce serait cool...

Merci

++

Commentaire de cirec le 06/03/2007 12:18:47 administrateur CS

Quand on ne change que le fichier ressources le compilateur ne remarque pas que le code à changé et donc ne reconstruit rien. Pour que la modification soit prise en compte il faut faire Maj+F9 ou dans le menu projet "Construire ProjectName" et la et seulement la, les nouvelles informations seront prises en compte.

@+
Cirec

Commentaire de Bestiol le 06/03/2007 15:04:50

Cirec est dans le vrai, il faut que tu forces la recompilation de l'archiveur :)

Commentaire de asgard_guigui le 07/03/2007 09:44:41

Ok Merci les gars pour votre aide
Grace a vous j'ai mieux compros comment ca marchait!

A+++

Commentaire de sp2308 le 19/03/2010 00:30:12

Bonjour

Je decouvre cet archiveur et j essaie de le comprendre. Certe il est detaillé mais je suis debutant ...
Toutefois je n ai pas trouvé le chemin de l icone... Alors ma question est idiote mais ne porte que sur l icone de l'archive crée.est il possible de mettre sa propre icone ?

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Compression Zip [ par bgK ] Salut,Je voudrais compresser des fichiers en zip avec delphi. Comment faire ?bgKPs : Peut être utiliser l'unité zLib, mais je ne sais pas m'en servir Compression [ par florentlejaxhe ] Je suis nouveau dans la programmation Dephi 6 et ai développé un logiciel de cryptage. Je désire lui adjoindre la compression du fichier grâce à la li CRC et compression [ par costello ] re bonjour est ce que quelqu'un aurait un moyen de répondre à une question qui me pose un réel problème...- comment savoir le CRC d'un fichier contenu compression [ par ares666 ] je voudrai savoir commen marche la zlib pour pouvoir compresser des FICHIERS et des DOSSIERSmerci d'avance Compression dossier Zlib [ par lupra ] Bonjour,Je voulais savoir si il est possible de compresser plusieur fichiers ou un dossier en un seul fichier zip avec la Zlib ou autre??j ai deja reg Compression de fichier [ par cedkat ] bonjourje travail sous delphi 6 et je voudrais compresser soit un répertoire, soit les fichier qui y sont.est-il possible d'utiliser le zip de XP ?si convertir en TIFF avec compression et classement [ par FeuilleMorte ] Salut,Je vous expose donc mon problème :Je numérise différents documents et les sauvegardes en fichier BMP ou JPEG avec un programme développé en Delp archivage batchmove [ par tommyy ] salut,pour archiver j'ai utilisé batchmove pour transferer sur un click des champs (table paradox) d'une table qui sont supprimés par l'utilisateur v Archivage des bases de données [ par RUSSE ] bonjour je voudrais avoir une application qui peut me sauvegarder tout la base de donnée ,en un seul fichier et qui peut me demandé un 2eme disquette Compression décompression [ par yafou ] j'aimerez bien avoir un exemple calire de compression et de decompression de fichier la majorités des exemple sont non fonctionnelle?Merci--____-=YaFo


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Septembre 2010
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
27282930   

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,669 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales