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 :

FileGetAttr ne marche pas pour les dossiers ?


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de WebPac
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    947
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 947
    Par défaut FileGetAttr ne marche pas pour les dossiers ?
    Bonjour tout le monde, je désire savoir si un dossier est en lecture seule ou non, j'essaie le QR de la FAQ : http://delphi.developpez.com/faq/?pa...tributsfichier
    mais il n'indique jamais le dossier en ReadOnly.
    Pour info, je dossier est sur un serveur et partagé en lecture seule pour les tests.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    var
      Attributs : Integer;  Attributs := FileGetAttr( edDossierSauvegarde.Text );
    begin
      if Attributs and faReadOnly = faReadOnly then
        ShowMessage( 'ReadOnly' );
    J'ai aussi essayé en utilisant un TSearchRec et FindFirst, FindNext, FindClose, j'ai eu le même problème, il ne le retrouvait pas étant en lecture seule.

    Est-ce que cela ne fonctionne que pour les fichiers ? Et si c'est le cas, comment peut-on le faire pour les dossiers ?
    Merci.

  2. #2
    Membre chevronné
    Avatar de Philippe Gormand
    Inscrit en
    Mars 2002
    Messages
    330
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 330
    Par défaut
    Bonjour.

    Il est bien possible que la fonction FileGetAttr ne renvoit pas les informations d'un fichier caché. C'est l'encapsulation d'une API WINDOWS. par contre, aucun souci avec FindFisrt et FindNext. Je les utilises dans un programme de copie de fichiers, et je n'ai aucun problème pour copier les fichiers et dossiers cachés, en lecture seule, system.

    Voici une routine que j'utilise dans mon programme.

    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
    39
    40
     
    {------------------------------------------------------------------------}
    {        Recherche tous les répertoires dans un répertoire racine        }
    {------------------------------------------------------------------------}
    function ListerLesRepertoires(const ParentDirectory: string;
                                  DirectoryList : TStringList) : Integer;
    var
      Status, J : Integer;
      SearchRec : TSearchRec;
      Chemin    : String;
     
    begin
      Chemin:=ParentDirectory;
      If Chemin = '' Then
       begin
          Result:=0;
          Exit;
       end;
      J := 0;
      If Chemin[Length(Chemin)] <> '\' Then Chemin:=Chemin + '\';
      Result := 0;
      Status := FindFirst(SlashSep(ParentDirectory, '*.*'), faDirectory, SearchRec);
      try
        while Status = 0 do
        begin
          if (SearchRec.Attr and faDirectory = faDirectory) then
          begin
            if (SearchRec.Name <> '.') and (SearchRec.Name <> '..') then
            begin
              DirectoryList.Add(Chemin + SearchRec.Name + '\');
              Inc(J);
            end;
          end;
          Status := FindNext(SearchRec);
        end;
      finally
        FindClose(SearchRec);
      end;
      Result := J;
    end;
    Tiens moi au courant. Merci.

  3. #3
    Membre éclairé Avatar de WebPac
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    947
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 947
    Par défaut
    Dans ton exemple, tu ne testes pas si un répertoire est en lecture seule ou non.
    Pour savoir si ce qui est trouvé est un répertoire ou non, il n'y a pas de soucis, cela fonctionne bien chez moi aussi, mais il indique que le répertoire n'est pas en lecture seule alors qu'il est partagé en lecture seule.
    Le Info.Attr retourne 16 (juste faDirectory) et non pas 17 (faDirectory et faReadOnly).

  4. #4
    Membre chevronné
    Avatar de Philippe Gormand
    Inscrit en
    Mars 2002
    Messages
    330
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 330
    Par défaut
    Excuse. J'avais pas compris.

    C'est vrai, je ne teste pas si le dossier ou le fichier est en lecture seule ou non, car je n'ai pas besoin de le savoir.

    Dès que j'aurais un moment, je me pencherais sur le problème. Ca m'intéresse.

    A+

  5. #5
    Membre éclairé Avatar de WebPac
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    947
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 947
    Par défaut
    Si tu trouves pourquoi cela ne marche pas et/ou si tu trouves comment le faire marcher, je suis preneur.

  6. #6
    Membre Expert
    Avatar de Eric Sigoillot
    Inscrit en
    Mars 2002
    Messages
    1 212
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 212
    Par défaut
    Bonjour,

    Tu as essayé avec l'API GetFileAttributesEx ?

    Elle a l'air plus performante et ils parlent des attributs d'un dossier..

    @++

Discussions similaires

  1. Code ne fonctionne pas pour les sous dossiers
    Par archi57 dans le forum VBScript
    Réponses: 10
    Dernier message: 18/02/2012, 15h24
  2. Réponses: 6
    Dernier message: 07/09/2009, 11h42
  3. Réponses: 0
    Dernier message: 21/05/2008, 15h59
  4. Réponses: 9
    Dernier message: 25/04/2008, 21h21
  5. [CSS] Bug IE avec height ne marche pas avec les %
    Par El Riiico dans le forum Mise en page CSS
    Réponses: 3
    Dernier message: 23/06/2005, 17h11

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