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

API, COM et SDKs Delphi Discussion :

Indy FTP , savoir si un repertoire est accessible


Sujet :

API, COM et SDKs Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 657
    Billets dans le blog
    65
    Par défaut Indy FTP , savoir si un repertoire est accessible
    Indy FTP , encore, je découvre .
    Je me suis lancé dans une liste des fichiers sur le serveur (dans un ListView)
    pas de problème particulier pour une liste sensu-stricto . Par contre , lorsque je suis sur un sous-répertoire ça se corse puisque celui-ci s'affiche même si je n'ai pas l'autorisation d'y accéder par la suite .

    D'où ma question , y a t'il un moyen de savoir si le répertoire sera accessible ultérieurement ?

    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
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    procedure TForm2.FTPBrowse(dir: string);
    var L : TStringList;
        i : integer;
        repftp : string;
        root : Boolean;
    begin
    L:=TStringList.Create;
    try
     try
      if not idFTP1.Connected then idFTP1.Connect;
      repftp := idFTP1.RetrieveCurrentDir;
      root:=length(dir)=0;
      if not root then
      begin
        if dir='..' then idFTP1.ChangeDirUp
                    else idFTP1.ChangeDir(trim(dir));
      end;
      Combobox1.Clear;
      Combobox1.Items.Add(idFTP1.RetrieveCurrentDir);
      combobox1.ItemIndex:=0;
      root:=(repftp=idFTP1.RetrieveCurrentDir);
      ColonneTri:=0;ColonneOrdre:=1;
      ListView1.Items.Clear;
      idFTP1.List;
      for i:= 0 to idftp1.DirectoryListing.Count - 1 do
       if idftp1.DirectoryListing.Items[i].ItemType=ditFile then
        begin
          with ListView1.Items.Add do
           begin
            Caption:=Idftp1.DirectoryListing.Items[i].FileName;
            if Idftp1.DirectoryListing.Items[i].SizeAvail
                 then subItems.Add(Format('%15d Ko',[Idftp1.DirectoryListing.Items[i].size]))
                 else subItems.Add('');
            subItems.Add(FormatDateTime('dd/mm/yyyy',Idftp1.DirectoryListing.Items[i].ModifiedDate));
            subItems.Add(Lowercase(Copy(ExtractFileExt(Idftp1.DirectoryListing.Items[i].FileName),2,9)));
           end;
        end
       else begin
         if idftp1.DirectoryListing.Items[i].FileName<>'.' then
            with ListView1.Items.Add do
              begin
               if idftp1.DirectoryListing.Items[i].FileName<>'..'
                 then Combobox1.Items.Add(idFTP1.RetrieveCurrentDir+Idftp1.DirectoryListing.Items[i].FileName);
               Caption:=Idftp1.DirectoryListing.Items[i].FileName;
               subItems.Add('');
               subItems.Add('');
               if i>1 then  // n'est pas '.' ou '..'   peut mieux faire
                 begin
                  subItems.Add('<dir>');
                  imageIndex:=1;
                 end
               else begin
                 subItems.Add('');
                 if root then imageindex:=3 else imageindex:=5;
    {c'est ici que je voudrait tester l'accessibilité, genre si non accessible alors imageindex=verrou}   
               end;
              end;
       end;
       ColonneOrdre:=-1;
       ListView1ColumnClick(ListView1,ListView1.Columns[0]);
     except
      // if idFTP1.Connected then idFTP1.Disconnect;
     end;
    finally
      L.Free;
      if idFTP1.Connected then idFTP1.Disconnect;
    end;
    end;

  2. #2
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Par défaut
    Citation Envoyé par SergioMaster Voir le message
    D'où ma question , y a t'il un moyen de savoir si le répertoire sera accessible ultérieurement ?
    Essaie de regarder du côté de la propriété UserPermissions de chaque item (notamment tes répertoires), afin de savoir si tu as les droits de lecture et/ou d'écriture.

    Ceci étant dit, encore faut-il que le serveur renvoie correctement la liste des fichiers (donc, avec ces droits), et que tu ne sois pas bloqué ensuite au niveau des fichiers contenus dans le répertoire...
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  3. #3
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 938
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 938
    Par défaut
    Et en passant aDetails = TRUE à idFTP1.List ?

  4. #4
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 657
    Billets dans le blog
    65
    Par défaut
    Résolu

    du moins en partie , puisque maintenant ces répertoires ne s'affichent plus
    (test avec typsoft ftpserveur)
    @AndNotOr
    aDetails = TRUE à idFTP1.List ?
    oui bien sur , c'était déjà a true
    @Mac LAK
    Essaie de regarder du côté de la propriété UserPermissions de chaque item (notamment tes répertoires), afin de savoir si tu as les droits de lecture et/ou d'écriture.
    c'était une bonne piste , devenu inutile , mais que j'ai pu analyser à loisir

    Merci a vous 2

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

Discussions similaires

  1. savoir si un repertoire est caché ou pas?
    Par zalalus dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 17/09/2010, 14h36
  2. Comment savoir si un lien est valide avec Indy
    Par dan_lizhot dans le forum Web & réseau
    Réponses: 3
    Dernier message: 02/01/2008, 15h38
  3. [C# / MS Access] savoir si une table est ouverte
    Par ager1912 dans le forum Accès aux données
    Réponses: 1
    Dernier message: 05/06/2007, 07h22
  4. savoir si un repertoire est vide
    Par Tempotpo dans le forum Langage
    Réponses: 9
    Dernier message: 14/06/2006, 15h03
  5. [Access] Comment savoir qu'un champs est vide ?
    Par Oberown dans le forum ASP
    Réponses: 9
    Dernier message: 25/10/2004, 10h47

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