Créer un pack de dossier et sous-dossiers ??

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
Jacobus
Messages : 1559
Inscription : mar. 06/avr./2004 10:35
Contact :

Créer un pack de dossier et sous-dossiers ??

Message par Jacobus »

Hello, est-ce que quelqu'un connaît le moyen de créer un pack à partir d'un dossier. C'est à dire que je voudrais créer une archive compressée d'un dossier et ses sous-dossiers (donc avec), afin de conserver l'arborescence initiale, et pas compresser 'que' les fichiers du dossier.

Après recherches infructueuses, je n'ai pas trouver de lib ou de code faisant ce type d'action, je me demande si vous auriez ça en magasin ou encore une piste à suivre.

Merci, @+
Quand tous les glands seront tombés, les feuilles dispersées, la vigueur retombée... Dans la morne solitude, ancré au coeur de ses racines, c'est de sa force maturité qu'il renaîtra en pleine magnificence...Jacobus.
lionel_om
Messages : 1500
Inscription : jeu. 25/mars/2004 11:23
Localisation : Sophia Antipolis (Nice)
Contact :

Message par lionel_om »

Ya un topic de 2005 là dessus (PB 3.9x donc), donc je sais pas si ca sera vraiment utile, mais ya 2 Lib pour la copression apparement : http://purebasic.forum-gratuit.com/view ... light=zlib

Lio
Webmestre de Basic-univers
Participez à son extension: ajouter vos programmes et partagez vos codes !
Avatar de l’utilisateur
Jacobus
Messages : 1559
Inscription : mar. 06/avr./2004 10:35
Contact :

Message par Jacobus »

je te remercie mais j'ai déjà vu et ce n'est pas ce que je cherche.
Enfin, je pense avoir trouvé quelque chose qu'il faut que je modifie pour l'adapter à mes besoins, si ça marche je poste un exemple. Sinon, si vous avez des idées...

@+
Quand tous les glands seront tombés, les feuilles dispersées, la vigueur retombée... Dans la morne solitude, ancré au coeur de ses racines, c'est de sa force maturité qu'il renaîtra en pleine magnificence...Jacobus.
Avatar de l’utilisateur
Droopy
Messages : 1151
Inscription : lun. 19/juil./2004 22:31

Message par Droopy »

La lib Pure_Zip fait ça.
Voici une copie de l'exemple fourni qui permet de compresser un dossier et ses sous-dossiers dans un zip.

Code : Tout sélectionner

; -=====================================================================================-
;                                Quick & dirty Mini Console ZIP
; -=====================================================================================-
;
Procedure PureZIP_CallbackForTest(file.s, PerCent.f)
  Static FirstTime.l
  If FirstTime = 0
    Print("Packing ")
    FirstTime = 1
  EndIf
  Print(".")
EndProcedure
;
myFileinfo.PureZIP_FileInfo
PureZIP_SetCallback(@PureZIP_CallbackForTest())
;
OpenConsole()
MyZIP.s = ProgramParameter()
If MyZIP
  MyFilesToZIP.s = ProgramParameter()
  If MyFilesToZIP
    If GetPathPart(MyFilesToZIP) = ""
      CurrentPath.s = Space(#MAX_PATH)
      GetCurrentDirectory_(#MAX_PATH, @CurrentPath)
      MyFilesToZIP = CurrentPath + "\" + MyFilesToZIP
    EndIf
    ArgOk.l = #True
    Option.s = ProgramParameter()
    If Option
      If LCase(Option) = "/r"
        MyOption.l = #PureZIP_Recursive
      Else
        ArgOk = #False
        PrintN("ERROR : unknown option")
        PrintN("")
      EndIf
    EndIf
  Else
    PrintN("ERROR : no file specified")
    PrintN("")
  EndIf
Else
  PrintN("ERROR : no archive specified")
  PrintN("")
EndIf 
;
If ArgOk
  PackedFiles.l = PureZIP_AddFiles(MyZIP, MyFilesToZIP, #PureZIP_StorePathRelative, MyOption)
  PrintN("")
  If PackedFiles
    PrintN(Str(PackedFiles) + " files packed in archive " + MyZIP)
  Else
    PrintN("No files found !")
  EndIf
Else
  PrintN("MiniZIP console PureZIP test file")
  PrintN("")
  PrintN("Syntax : MiniZIP Archive FileName [Option]")
  PrintN("")
  PrintN("Option : /r (recursive)")
  PrintN("")
  PrintN("Example : MiniZIP Test.zip *.*")
EndIf
CloseConsole()
; -=====================================================================================-
Avatar de l’utilisateur
Jacobus
Messages : 1559
Inscription : mar. 06/avr./2004 10:35
Contact :

Message par Jacobus »

Bah, chez moi la lib Pure_Zip ne donne pas de bons résultats. pour ce qui est des fichiers textes, ok, par contre pour les images, zéro.
Quand tous les glands seront tombés, les feuilles dispersées, la vigueur retombée... Dans la morne solitude, ancré au coeur de ses racines, c'est de sa force maturité qu'il renaîtra en pleine magnificence...Jacobus.
Avatar de l’utilisateur
Droopy
Messages : 1151
Inscription : lun. 19/juil./2004 22:31

Message par Droopy »

Jacobus a écrit :Bah, chez moi la lib Pure_Zip ne donne pas de bons résultats. pour ce qui est des fichiers textes, ok, par contre pour les images, zéro.
J'ai compressé un dossier avec des images png et gif, et n'ai aucun soucis à les visualiser après extraction.

Qu'entends tu par 'ne donne pas de bon résultats' ?
Avatar de l’utilisateur
Jacobus
Messages : 1559
Inscription : mar. 06/avr./2004 10:35
Contact :

Message par Jacobus »

si je compresse un dossier contenant une trentaine de bmp de tailles variables, à la décompression j'obtiens 2 ou 3 images bmp illisibles et d'autres reformés en puzzle, généralement le bas de l'image découpé en 3 ou 4 morceaux recollés dans le désordre. Ce qui me donne un résultat plus qu'approximatif. Sinon c'est sûr la compression des sous-dossiers est réalisable, mais dans les mêmes conditions (et encore avec les chemins relatifs, car si tu prends l'option des chemins absolus, c'est la cata) dommage :roll:

l'utilisation la plus simple de cette lib que j'ai trouvé:

Code : Tout sélectionner

Procedure PACKAGE()
 REP$ = GetCurrentDirectory()
 MyZIP.s = REP$+"Package.zip"
 MyFilesToZIP.s = REP$+"TRANSFERT\*.*"
 PureZIP_AddFiles(MyZIP, MyFilesToZIP, #PureZIP_StorePathRelative, #PureZIP_Recursive)
EndProcedure

Procedure UNPACKAGE()
 REP$ = GetCurrentDirectory()
 MyZIP.s = REP$+"Package.zip"
 MyZIPOutPut.s = REP$+"Dezippe\"
 PureZIP_ExtractFiles(MyZIP, "*.*", MyZIPOutPut, #True)
EndProcedure
ces deux procédures devraient fonctionner simplement...
j'ai constaté le même bug avec l'outil de InfoByt3 PureSFX qui utilise Pure_Zip, donc...
Quand tous les glands seront tombés, les feuilles dispersées, la vigueur retombée... Dans la morne solitude, ancré au coeur de ses racines, c'est de sa force maturité qu'il renaîtra en pleine magnificence...Jacobus.
Avatar de l’utilisateur
Droopy
Messages : 1151
Inscription : lun. 19/juil./2004 22:31

Message par Droopy »

Bizarre, surement à un bug de la lib !?

J'ai tenté de reproduire ton soucis avec 25 bmp, sans succès, aucune image n'est corrompue.
Avatar de l’utilisateur
Jacobus
Messages : 1559
Inscription : mar. 06/avr./2004 10:35
Contact :

Message par Jacobus »

Droopy a écrit :Bizarre, surement à un bug de la lib !?

J'ai tenté de reproduire ton soucis avec 25 bmp, sans succès, aucune image n'est corrompue.
Ca me surprend quand même :? je ne comprend pas, d'où ma recherche d'un palliatif...
Quand tous les glands seront tombés, les feuilles dispersées, la vigueur retombée... Dans la morne solitude, ancré au coeur de ses racines, c'est de sa force maturité qu'il renaîtra en pleine magnificence...Jacobus.
gnozal
Messages : 832
Inscription : mar. 07/déc./2004 17:35
Localisation : France
Contact :

Message par gnozal »

Il n'y a pas de corruption de fichiers avec PureZIP à ma connaissance. En cas de problèmes, il faut utiliser les dernières beta librairies de PB4 ( www.purebasic.com/beta ) à cause du bug ReadData()/Eof() et la dernière version de PureZIP.
La version PB3.94 n'a jamais posé ce genre de problèmes.

Références :
- http://www.purebasic.fr/english/viewtop ... c&start=44
- http://www.purebasic.fr/english/viewtop ... highlight=

S'il subsiste un problème avec les beta librairies, merci de poster le code qui pose problème ici : http://www.purebasic.fr/english/viewtop ... &start=165
Avatar de l’utilisateur
Jacobus
Messages : 1559
Inscription : mar. 06/avr./2004 10:35
Contact :

Message par Jacobus »

Suivant tes conseils j'ai installé les dernières beta libs (en transformant les fichiers (*.TXT) téléchargés en Fichier) mais le compilo de pb n'aime pas et plante au lancement. Donc retrait des beta libs et retour des autres. Il y a peut-être une façon de charger ces beta libs autrement pour qu'elles soient prises en compte?

Je ne peux donc te dire si ta lib pose problème après correction, car elle me rendrait effectivement bien service. Les deux procédures de compression et décompression ci-dessus créées d'après ta librairie, sont des plus basiques. Comme je l'ai dit plus haut, les corruptions interviennent quasiment uniquement avec des BMP, les autres formats d'image sont rendus correctement.

Rectificatif :
J'ai changé les libs String et FileSystem par les beta et le compilo accepte. j'ai retesté ta lib avec les procédures dito en compressant un dossiers de plusieurs centaines de bmp.
résultat = les bmp de petites taille sont correctement restitués. les plus grands format (ex:200x300) sont corrompus. c'est le cas de 7 images sur le lot. C'est mieux mais c'est pas encore ça.
Quand tous les glands seront tombés, les feuilles dispersées, la vigueur retombée... Dans la morne solitude, ancré au coeur de ses racines, c'est de sa force maturité qu'il renaîtra en pleine magnificence...Jacobus.
gnozal
Messages : 832
Inscription : mar. 07/déc./2004 17:35
Localisation : France
Contact :

Message par gnozal »

Jacobus a écrit :Suivant tes conseils j'ai installé les dernières beta libs (en transformant les fichiers (*.TXT) téléchargés en Fichier) mais le compilo de pb n'aime pas et plante au lancement.
Pas de message d'erreur ?
Tu utilises bien PB 4 ?
Les librairies sont à copier dans \PureBasic\PureLibraries\.
Jacobus a écrit :Je ne peux donc te dire si ta lib pose problème après correction, car elle me rendrait effectivement bien service. Les deux procédures de compression et décompression ci-dessus créées d'après ta librairie, sont des plus basiques.
Je confirme que sous PB4 les beta librairies sont indispensables pour PureZIP (bug PB4).
Avatar de l’utilisateur
Jacobus
Messages : 1559
Inscription : mar. 06/avr./2004 10:35
Contact :

Message par Jacobus »

Pas de message d'erreur ? ==> non
Tu utilises bien PB 4 ? ==> oui
Les librairies sont à copier dans \PureBasic\PureLibraries\. ==> oui

je vais réessayer en installant les beta libs une à une pour voir laquelle génère le plantage...
Quand tous les glands seront tombés, les feuilles dispersées, la vigueur retombée... Dans la morne solitude, ancré au coeur de ses racines, c'est de sa force maturité qu'il renaîtra en pleine magnificence...Jacobus.
Avatar de l’utilisateur
Jacobus
Messages : 1559
Inscription : mar. 06/avr./2004 10:35
Contact :

Message par Jacobus »

Bon c'est Ok!

J'ai installé toutes les beta libs avec sussès... sauf la Systray, c'est elle qui plante mon compilo.

Pure_Zip fonctionne donc parfaitement avec les autres beta libs et les bmp sont correctement restitués, quelle que soit leur taille.

=> Un grand Merci à Maître Gnozal! cela va vraiment me simplifier la vie dans mes applis... :)
Quand tous les glands seront tombés, les feuilles dispersées, la vigueur retombée... Dans la morne solitude, ancré au coeur de ses racines, c'est de sa force maturité qu'il renaîtra en pleine magnificence...Jacobus.
gnozal
Messages : 832
Inscription : mar. 07/déc./2004 17:35
Localisation : France
Contact :

Message par gnozal »

Jacobus a écrit :=> Un grand Merci à Maître Gnozal! cela va vraiment me simplifier la vie dans mes applis... :)
:D
Répondre