Turbo power abbrevia : extraire le contenu d'un fichier zip

Soyez le premier à donner votre avis sur cette source.

Vue 12 006 fois - Téléchargée 1 240 fois

Description

Abbrevia est un outil composé de plusieurs composants permettant de compresser ou de décompresser des fichiers à partir de Delphi. Il supporte PKZIP 4, Microsoft CAB, TAR, gzip et la création des archives self-extracting. Abbrevia inclut des composants visuels, ce qui simplifient la programmation.

Vous allez maintenant créer votre premier programme en utilisant les composants TurboPower Abbrevia. L'exemple de programmation a pour but d' extraire le contenu d'un fichier ZIP.

On utilise pour cela les composants TAbZipView, TAbUnZipper et TAbVCLMeterLink.

Source / Exemple :


unit Unit1;

//Programme par Yoann
//http://delphipage.free.fr/

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, AbMeter, AbBrowse, AbBase,AbZBrows, AbUnzper, Grids, AbView,
  AbZView, FileCtrl;

type
  TForm1 = class(TForm)
    GroupBox1: TGroupBox;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Label1: TLabel;
    Label2: TLabel;
    Edit1: TEdit;
    Edit2: TEdit;
    GroupBox2: TGroupBox;
    AbUnZipper1: TAbUnZipper;
    AbVCLMeterLink1: TAbVCLMeterLink;
    AbMeter1: TAbMeter;
    AbZipView1: TAbZipView;
    OpenDialog1: TOpenDialog;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
  private
    { Déclarations privées }
  public
    { Déclarations publiques }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
begin
if OpenDialog1.Execute then //Si l'utilisateur clique  sur le bouton "OK" alors
begin
Edit1.Text:=OpenDialog1.FileName; //Affiche dans le edit le chemin du fichier
//Affiche le contenu du fichier ZIP dans le composant AbZipView
AbZipView1.BeginUpdate; //Empêche la visionneuse de se rafraichir jusqu'à ce que "EndUpdate" soi appeller
AbUnZipper1.FileName:=Edit1.Text; //Chemin du fichier zip (par exemple "c:\\test.zip")
AbZipView1.EndUpdate;
end;
end;

procedure TForm1.Button2Click(Sender: TObject);
Var Rep: String;
begin
SelectDirectory('Choisir le répertoire de destination :', '',Rep); //Affiche une boîte de dialogue permettant à l'utilisateur de choisir un nom de répertoire
Edit2.Text:=Rep; //Affiche dans le edit le repertoire choisit
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
if (Edit1.Text<>'') and (Edit2.Text<>'') then //Vérifie que les deux edit ont été remplis
begin
Screen.Cursor:=crHourGlass; //Curseur sablier
AbUnZipper1.BaseDirectory:=Edit2.Text; //Répertoire de desintation des fichiers contenus dans le fichier ZIP (le répertoire doit exister)
AbUnZipper1.ExtractFiles('*.*'); //Extrait tous les fichiers
Screen.Cursor:=crDefault; //Curseur sablier
end;
end;

end.

Conclusion :


Plus d'information sur : http://delphipage.free.fr/

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
106
Date d'inscription
mardi 18 juin 2002
Statut
Membre
Dernière intervention
13 janvier 2007

Ortographe: *publier*

wG
Messages postés
106
Date d'inscription
mardi 18 juin 2002
Statut
Membre
Dernière intervention
13 janvier 2007

Salut,

j'ai fais une application qui utilise ces composants, parmi eux TabZipper. Je peux te c/c la partie qui utilise ce composant, qui marche très bien !
Je vais retirer le code de mon application qui n'utilise pas le composant et me restreindre uniquement a celui-ci, j'espere que ca pourra t'aider un peu:
zipPack est le nom du composant sur la form.

zipPack.OpenArchive(ExtractFilePath(Application.ExeName) + '\' + edtNomFile.Text); //créer (si non existante) et ouvre l'archive
zipPack.AddFiles(Strings[i], 0); // Strings[i] est l'adresse du fichier complet
zipPack.AddFiles(ExtractFilePath(Application.ExeName) + '\icondef.xml', 0); //un autre ajout de fichier a l'archive zip
zipPack.Save; //Sauve les changements effectués sur l'archive
zipPack.CloseArchive; //Ferme l'archive

Voila, mais je compte publiées les sources de mon application dans peu de temps. Donc tu pourras accéder a la partie compression.

A bientot !

wG
Messages postés
1119
Date d'inscription
lundi 4 février 2002
Statut
Membre
Dernière intervention
4 octobre 2006
5
Salut,

Merci de ta réponse mais en effet j'ai bien utiliser le composant TAbZipper ou le TAbZipKit mais ca ne fonctionne avec aucun des deux.
J'ai utilisé aussi les exemples fournit avec le package et à chaque fois qu il s agit de zipper j'ai une erreur de violation d'acces. J'ai voulu aussi réinstaller le nouveau package abbrevia mais quand je fais installer le package delphi me renvoie une erreur en me disant que le paquet n'est pas compatible parcek c'est un paquet de conception. J'avais bien entendu désinstaller l'ancien du coup maintenant je n'ai plus abbrevia.

Si quelqu'un à une idée merci d'avance.

Bonne prog,
JMP.
Messages postés
25
Date d'inscription
lundi 1 octobre 2001
Statut
Membre
Dernière intervention
28 juillet 2004

Salut,

Normal puisque la source s'appelle "EXTRAIRE LE CONTENU D'UN FICHIER ZIP", c'est donc que tu ne peux pas "zippé" mais "dézippé" :)

Le compasant TAbUnZipper permet de décompresser et le composant TAbZipper pour compresser.

Tu peux aussi utiliser le composant TAbZipKit qui effectue les deux manipulations (décompresser et compresser).

Il y a aussi des exemples fournit avec les composants TUrbo Power Abbrevia.

A+
Messages postés
1119
Date d'inscription
lundi 4 février 2002
Statut
Membre
Dernière intervention
4 octobre 2006
5
Salut,

Et bien j'ai essayé mais impossible de zipper un fichier. J'ai été sur ton site j'ai téléchargé tout le package ect ... mais ca ne fonctionne pas. En revanche pour dezipper ca marche bien. Mais impossible de zipper un petit fichier meme avec l'exemple fournit avec.
Aurais tu un exemple (juste zipper un petit fichier) qui fonctionne chez toi que je puisse comparer.

Merci,
JMP.
Afficher les 8 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.