IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Delphi Discussion :

Difficultés avec ZIP


Sujet :

Delphi

  1. #1
    Membre régulier

    Profil pro
    Inscrit en
    Avril 2004
    Messages
    536
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 536
    Points : 121
    Points
    121
    Par défaut Difficultés avec ZIP
    Bonjour à tous

    Devant renoncer à Abbrevia, qu'XE7 semble ne pas accepter, je me suis tourné vers les Jedi. Le composant JvZLibMultiple.

    J'ai vu ce tuto : https://github.com/project-jedi/jvcl/blob/master/jvcl/examples/JvZLibMultiple/JvZLibMultipleMainFormU.pas et je ne comprends pas bien.

    Où sort le fichier compressé ? Dans quel répertoire ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    
    Var   Rep : string;
    
    begin
        Form1.StatusBar.Panels[0].Text := 'COMPRESSION EN COURS';
        Form1.StatusBar.Update;
    
        Rep := 'D:\REPERTOIRE';
        Form1.JvZlibMultiple1.Create(Nil);
        Form1.JvZlibMultiple1.CompressDirectory(Rep, True);  // Semble effectuer la compression (ça "mouline"), mais ça sort où ?
    
        Form1.StatusBar.Panels[0].Text := 'COMPRESSION TERMINEE';
        Form1.StatusBar.Update;
    
    end;
    J'ai loupé une instruction quelque part, mais laquelle ?

  2. #2
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 445
    Points
    28 445
    Par défaut
    Et pourquoi ne pas utiliser TZipFile.ZipDirectoryContents dans System.Zip ?
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  3. #3
    Membre régulier

    Profil pro
    Inscrit en
    Avril 2004
    Messages
    536
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 536
    Points : 121
    Points
    121
    Par défaut
    Heu... Réponse idiote : j'ignorais cette fonction !

    Merci Je vais la tester tout de suite !

    23 H 59 : Oui mais... Où est déclaré ce type TZipFile ? La doc Embarcadero : http://docwiki.embarcadero.com/Libra...m.Zip.TZipFile

    J'ai trouvé, entre autres, ce code : http://www.pointercloud.com/?p=34

    Ca ressemble un peu à la gestion d'une TStringList, mais quel est l'unité de déclaration du type TZipFile ? J'ai beau mettre System.ZLib dans les USES, le type TZipFile n'est pas reconnu. Il est pourtant bien dans les librairies (Win32\Release et Win32\Debug).

    Syntaxe employée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Procedure Machin;
    Var F_Zip : TZipFile;  // Delphi n'en veut pas
     
    begin
        F_Zip := TZipFile.Create; // impossible, puisque le type TZipFile m'est refusé
     
    end;

  4. #4
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 044
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 044
    Points : 40 962
    Points
    40 962
    Billets dans le blog
    62
    Par défaut
    Bonjour,

    Paul indiquait d'utiliser System.Zip et non System.Zlib

    j'en profite d'ailleurs pour demander à quoi sert la Sytem.Zlib , que je ne n'avais encore pas vue
    et pour montrer un petit source que j'ai trouvé je ne sais où (pardon à l'auteur de ce dernier) permettant d'extraire un fichier image d'un zip via un stream. Intéressant même si hors sujet
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
     
    uses system.zip
     
    procedure TForm41.Button1Click(Sender: TObject);
    var
      LStream    : TStream;
      LZipFile   : TZipFile;
      LOleGraphic: TOleGraphic;
      LocalHeader: TZipHeader;
    begin
      LZipFile := TZipFile.Create;
      try
        //open the compressed file
        LZipFile.Open('C:\Users\Dexter\Desktop\registry.zip', zmRead);
        //create the memory stream
        LStream := TMemoryStream.Create;
        try
          //LZipFile.Read(0, LStream, LocalHeader); you can  use the index of the file
          LZipFile.Read('SAM_0408.JPG', LStream, LocalHeader); //or use the filename 
          //do something with the memory stream
          //now using the TOleGraphic to detect the image type from the stream
          LOleGraphic := TOleGraphic.Create;
          try
             LStream.Position:=0;
             //load the image from the memory stream
             LOleGraphic.LoadFromStream(LStream);
             //load the image into the TImage component
             Image1.Picture.Assign(LOleGraphic);
          finally
            LOleGraphic.Free;
          end;
        finally
          LStream.Free;
        end;
      finally
       LZipFile.Free;
      end;
    end;
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  5. #5
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 445
    Points
    28 445
    Par défaut
    System.ZLib pour c'est pour la compression GZIP qui n'a pas de format de fichier déterminé. C'est très utilisé sous Linux avec "tar" qui permet de concaténer des fichiers, gzip permet alors de compresser le résultat en un ficher "tar.gz".

    le format ZIP contient quand à lui un catalogue de fichiers il est donc possible d'extraire un seul fichier, avec tag/gz il faut tout décompresser (tout au moins jusqu'au fichier recherché) même pour ne prendre qu'un seul fichier.

    l'autre différence, c'est que dans la format ZIP tous les fichiers sont compressés individuellement, alors que si on prend une arborescence de sources par exemple, ils sont concaténés par "tar" puis c'est un seul gros fichier qui est compressé avec probablement un meilleur taux quand on passe par tar/gz.
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

Discussions similaires

  1. [SSIS][2k5]Difficulté avec SSIS
    Par david71 dans le forum SSIS
    Réponses: 9
    Dernier message: 05/01/2006, 19h28
  2. [JS] Difficulté avec le onmouseover...
    Par Pleymo dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 26/11/2005, 12h09
  3. [VBA] difficultés avec une requête INSERT
    Par elias dans le forum Access
    Réponses: 7
    Dernier message: 06/09/2005, 14h53
  4. Difficultés avec - onchange - !
    Par zakuli dans le forum Balisage (X)HTML et validation W3C
    Réponses: 7
    Dernier message: 20/07/2005, 12h00
  5. Difficultés avec TMenuItem.OnDrawItem
    Par ybruant dans le forum Composants VCL
    Réponses: 4
    Dernier message: 12/01/2005, 11h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo