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

Lazarus Pascal Discussion :

TZipper et nom de fichier [Lazarus]


Sujet :

Lazarus Pascal

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté

    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    104
    Détails du profil
    Informations personnelles :
    Âge : 64
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 104
    Par défaut TZipper et nom de fichier
    Bonjour

    j'ai le code suivant pour compresser une sauvegarde
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
         FZipper := Tzipper.Create;
         FZipper.Filename := AFilename;
         FZipper.Entries.AddFileEntry(FFileName);
         FZipper.ZipAllFiles;
    Sous Windows, j'obtiens bien une archive mais je ne peux pas l'extraire car le chemin du fichier stocké dans celle-ci correspond au chemin complet du fichier, y compris la lettre du lecteur. 7zip ne voit pas le fichier dans l'archive, celle-ci paraît vide.
    Le gestionnaire d'archive de Windows le voit mais n'arrive pas à l'extraire car le chemin est incorrect.

    Sous Linux, l'archive se crée avec le fichier mais là aussi le chemin part depuis la racine /

    J'ai essayé de regarder dans les docs, mais je n'ai pas trouvé comment supprimer le chemin vers le fichier.

    Quelqu'un aurait-il une info ou un exemple pour le faire ?
    Merci
    Cordialement
    Claude

  2. #2
    Expert confirmé
    Avatar de Ph. B.
    Homme Profil pro
    Freelance
    Inscrit en
    Avril 2002
    Messages
    1 786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Haute Garonne (Midi Pyrénées)

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

    Informations forums :
    Inscription : Avril 2002
    Messages : 1 786
    Par défaut
    Bonjour,
    Ce composant accepte des fichiers au chemin d'accès valide, qu'il soit absolu ('C:\Temp\SousTemp\toto.txt') ou relatif par rapport au répertoire courant ('SousTemp\toto.txt' pour un répertoire courant 'C:\Temp').

    A partir de là et en conjonction avec la fonction ExtractRelativePath, on peut réaliser des zips adéquats (sans chemin absolu ou spécifique à un SE). Exemple :
    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
    OldCurrentDir := GetCurrentDir;
    SetCurrentDir('C:\Temp\');   
    try
      FZipper := TZipper.Create;
      try
        FZipper.Filename := AFilename;
        FZipper.Entries.AddFileEntry(ExtractRelativepath('C:\Temp\', 'C:\Temp\SousTemp\toto.txt')));
        FZipper.Entries.AddFileEntry(ExtractRelativepath('C:\Temp\', 'C:\Temp\titi.jpg')));
        FZipper.ZipAllFiles;
      finally
        FZipper.Free;
      end;
    finally
      SetCurrentDir(OldCurrentDir);
    end;
    A adapter aux besoins, attention à ne pas oublier le séparateur à la fin du chemin pour la fonction ExtractRelativePath à ce que AFileName soit un chemin absolu au risque de voir placer le zip dans le répertoire inadéquat...
    --
    Philippe.

  3. #3
    Membre expérimenté

    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    104
    Détails du profil
    Informations personnelles :
    Âge : 64
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 104
    Par défaut
    Merci

    j'ai modifier le code de la manière suivante

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
      OldCurrentDir := GetCurrentDir;
      SetCurrentDir(ExtractFilePath(AFilename));
      try
         FZipper := Tzipper.Create;
         FZipper.Filename := AFilename;
         FZipper.Entries.AddFileEntry(ExtractRelativepath('./', ExtractFileName(FIleName));
         FZIpper.ZipAllFiles;
      finally
        FZipper.Free;
      end;
      SetCurrentDir(OldCurrentDir);
    et maintenant j'obtient bien un fichier sans chemin dans mon zip

    merci
    cordialement
    Claude

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment récupérer le nom du fichier sans l'extension ?
    Par altahir007 dans le forum Langage
    Réponses: 16
    Dernier message: 13/11/2009, 13h20
  2. Récupérer le nom du fichier spool correspondant à un job
    Par chtiot dans le forum API, COM et SDKs
    Réponses: 3
    Dernier message: 23/02/2004, 20h28
  3. Réponses: 2
    Dernier message: 29/01/2004, 11h05
  4. Réponses: 4
    Dernier message: 10/10/2003, 18h04
  5. nom de fichier et variables d'environnement
    Par joebarthib dans le forum Langage
    Réponses: 2
    Dernier message: 18/07/2002, 15h21

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