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 :

[OPENDIALOG] : soucis avec fichier a l'interieur d'un fichier ZIP


Sujet :

Delphi

  1. #1
    Membre à l'essai
    Inscrit en
    Mars 2007
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 50
    Points : 24
    Points
    24
    Par défaut [OPENDIALOG] : soucis avec fichier a l'interieur d'un fichier ZIP
    Bonjour a tous,

    J'ai un petit soucis avec le composant OpenDialog.
    Je fais un test avec le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
          Edit1.Text:=''; 
          Edit2.Text:='';
          Edit3.Text:='';
          Edit4.Text:='';
          Form1.OpenDialog1.InitialDir:=ExtractFilePath(application.ExeName);
          if Form1.OpenDialog1.Execute then
            begin
                  Edit1.Text:=Form1.OpenDialog1.FileName;
                  Edit2.Text:=ExtractFilePath(Form1.OpenDialog1.FileName);
                  Edit3.Text:=ExtractFileDir(Form1.OpenDialog1.FileName);
                  Edit4.Text:=ExpandUNCFileName(Form1.OpenDialog1.FileName);
            end;
    Lorsque je l'utilise "normalement", avec un fichier zip, tout se passe bien : j'ai un bon filename et je peux extraire le chemin du filename
    Nom : 1.png
Affichages : 227
Taille : 67,8 KoNom : 2.png
Affichages : 213
Taille : 11,0 Ko

    Par contre, si je l’utilise avec un fichier a l’intérieur d'un zip je n'obtient plus de chemin.
    Nom : 3.png
Affichages : 210
Taille : 48,2 KoNom : 4.png
Affichages : 207
Taille : 8,1 Ko

    Le fichier ZIP n'est pas un répertoire, mais Windows le montre comme tel.
    Comment éviter ce problème si l’utilisateur sélectionne un fichier dans un zip ? sachant que si j'ai le chemin complet, je peux voir s'il y un ".zip" dedans et le dezipper


    Merci d'avance.

    Delphi 2007, Win7

  2. #2
    Membre chevronné

    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 288
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2002
    Messages : 1 288
    Points : 1 936
    Points
    1 936
    Par défaut
    Tu ne pourras pas.

    Windows "dézippe" ton fichier zip dans un répertoire temporaire pour afficher la liste des fichiers du zip. Quand tu "sors" du zip, ce répertoire est supprimé. Donc ton fichier n'existe plus.
    Ce n'est pas le fonctionnement exact, mais l'idée est que ton fichier n'existe pas en tant que tel dans le système de fichiers donc tu ne peux pas le sélectionner.
    Delphi 7/XE2/XE3
    C#
    Oracle 9i à 12c
    SQL Server 2008 à 2014

  3. #3
    Membre à l'essai
    Inscrit en
    Mars 2007
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 50
    Points : 24
    Points
    24
    Par défaut
    Il n'y a donc aucun moyen de récupérer l’arborescence jusqu'au zip ?

  4. #4
    Expert éminent
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 664
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 664
    Points : 6 959
    Points
    6 959
    Par défaut
    Il n'y a pas une option pour empêcher Windows de mettre le nez dans les zip ?
    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. ___ Écrivez dans un français correct !!

    C++Builder 5 - Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.3.2 Entreprise - Delphi 10.4.2 Entreprise - Delphi 11.1 Entreprise
    OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.4)

  5. #5
    Membre à l'essai
    Inscrit en
    Mars 2007
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 50
    Points : 24
    Points
    24
    Par défaut
    Je n'ai pas encore trouve l'option sous windows.

  6. #6
    Expert confirmé
    Avatar de Ph. B.
    Homme Profil pro
    Freelance
    Inscrit en
    Avril 2002
    Messages
    1 784
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    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 784
    Points : 5 915
    Points
    5 915
    Par défaut
    Bonjour,
    Citation Envoyé par drxel Voir le message
    Le fichier ZIP n'est pas un répertoire, mais Windows le montre comme tel.
    Comment éviter ce problème si l’utilisateur sélectionne un fichier dans un zip ? sachant que si j'ai le chemin complet, je peux voir s'il y un ".zip" dedans et le dezipper
    Il faut utiliser l'événement OnFolderChange et une variable pour savoir que le fichier renvoyé est inclus dans un fichier archive :
    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
    type
      TForm1 = class(TForm)
        OpenDialog1: TOpenDialog;
        Button1: TButton;
        //...
        procedure Button1Click(Sender: TObject);
        procedure OpenDialog1FolderChange(Sender: TObject);
        //...
      private
        { Déclarations privées }
        FLastFileSelected: String;
        //...
      public
        { Déclarations publiques }
        //...
      end;
     
    //...
    procedure TForm1.OpenDialog1FolderChange(Sender: TObject);
    begin
      FLastFileSelected := OpenDialog1.FileName;
    end;
     
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      if OpenDialog1.Execute then
        ShowMessage(OpenDialog1.FileName + #13#10 +
                    FLastFileSelected);
    end;
    Après, "ya plus ka" !
    Attention, suivant les manipulations, on peut retrouver dans la variable 2 fois le nom du fichier zip (par exemple C:\Repertoire\SousRepertoire\Fichier.zip\Fichier.zip)
    Philippe.

  7. #7
    Membre à l'essai
    Inscrit en
    Mars 2007
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 50
    Points : 24
    Points
    24
    Par défaut
    Bonjour Ph. B.,

    Je viens de voir le message et je vais essaye des que possible ta solution.

  8. #8
    Membre à l'essai
    Inscrit en
    Mars 2007
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 50
    Points : 24
    Points
    24
    Par défaut
    Merci Ph. B.,

    Je viens d'essayer ta solution et elle fonctionne parfaitement.

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

Discussions similaires

  1. Soucis avec lecture d'un Boolean dans un fichier property
    Par timbrochier dans le forum Langage
    Réponses: 2
    Dernier message: 01/10/2010, 18h28
  2. souci avec fichier php
    Par mchbihi dans le forum Dreamweaver
    Réponses: 1
    Dernier message: 25/03/2009, 10h38
  3. [suphp] Souci avec les droits des fichiers
    Par Blount dans le forum Apache
    Réponses: 2
    Dernier message: 04/01/2009, 19h41
  4. Soucis avec argc et argv dans fichier Header
    Par kegilko dans le forum Débuter
    Réponses: 8
    Dernier message: 09/11/2008, 16h13
  5. Réponses: 3
    Dernier message: 05/04/2005, 11h52

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