Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 9 sur 9
  1. #1
    Membre actif
    Inscrit en
    août 2002
    Messages
    334
    Détails du profil
    Informations forums :
    Inscription : août 2002
    Messages : 334
    Points : 156
    Points
    156

    Par défaut Commande List avec un TIdFTP

    Bonjour,
    il est possible d'utiliser la commande Lis() d'un TIdFTP pour obtenir un certain nombre d'informations sur les dossiers et fichiers d'un dossier d'un serveur.
    Il faut par exemple écrire :
    Code :
    IdFTP1->List(liste, "", true);
    liste étant une TStringList.
    Lorsque j'essaie d'utiliser cette méthode pour obtenir
    • Le nom
    • la taille
    • la date de création
    • le type (fichier ou dossier)

    Je reçois le message
    "Aucun analyseur de liste FTP n'a été enregistré".
    Comment faut-il faire pour que cette commande fonctionne ?
    Merci si vous pouvez me dépanner.
    Gilbert PASQUALINI

  2. #2
    Expert Confirmé Sénior Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    juillet 2006
    Messages
    10 003
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : juillet 2006
    Messages : 10 003
    Points : 12 789
    Points
    12 789

    Par défaut

    TStringList liste est instanciée et vide prêt à recevoir des données ?
    aucun filtre dans ASpecifier, tu veux l'ensemble du répertoire courant ? as-tu les droits de parcours de ce dossier ?

    Tu utilises cette variante TIdFTP.List()

    Ton erreur correpond à RSFTPNoListParseUnitsRegistered lorsqu'il n'y a pas de TIdFTPListParseClass (voir CheckListParseCapa)
    qui correspond aux informations fourni par NLST c'est parce que tu as mis ADetails à true,
    Faudrait voir si il ne faudrait pas forcer le lancement de la section initialisation (via un pragma link de l'obj) qui enregistre les parser voir IdAllFTPListParsers.pas et IdFTPListParseBase.pas et les équivalents HPP

    Code :
    RegisterFTPListParser(__classid(TIdFTPLPNList));
    Essaye aussi ADetails à false, tu auras au moins la liste des fichiers
    Après tu pourras tenter manuellement sur chaque fichier un FileDate
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

    Halte à la ségrégation des Cinémas, VO sur Paris, VF en Banlieue, Abonnement résilié !

  3. #3
    Membre actif
    Inscrit en
    août 2002
    Messages
    334
    Détails du profil
    Informations forums :
    Inscription : août 2002
    Messages : 334
    Points : 156
    Points
    156

    Par défaut

    J'ai essayé
    Code :
    IdFTP1->List(liste, "", true);
    liste étant une TStringList.

    Voilà ce qu'il y a dans la StringList :
    xrwxrwx 1 1022 100 3627041 Oct 09 2009 Accident-Saint-Jean.pdf
    drwxrwxrwx 1 1026 100 4096 Nov 11 17:39 livres romans francais
    -rwxrwxrwx 1 1022 100 2235353 Dec 11 2008 BlowingRings.wmv
    -rwxrwxrwx 1 1022 100 1644466 Sep 14 2009 Braque-02.jpg
    drwxrwxrwx 1 1022 100 4096 Oct 13 12:43 Calendrier
    drwxrwxrwx 1 1026 100 4096 Aug 24 2011 Claude Allegre et les Guignols de l'info
    -rwxrwxrwx 1 1022 100 66767 May 27 2007 Climat-Temp象ture-soleil.pdf
    -rw-rw-rw- 1 1029 100 730012 Oct 6 13:08 Comment 鳲e modeste-02.jpg
    -rw-rw-rw- 1 1029 100 730012 Oct 1 11:58 Comment 鳲e modeste.jpg
    -rw-rw-rw- 1 1029 100 1812992 Oct 1 12:03 ConnexionPr.exe
    -rwxrwxrwx 1 1022 100 4738368 May 09 2007 DWL-G710_GIG_Fr.pdf
    drwxrwxrwx 1 1029 100 4096 Nov 20 2011 D衩t-Internet
    -rwxrwxrwx 1 1022 100 67869 Jun 20 2008 Edf-TF1-Economies d'譥rgie.pdf
    drwxrwxrwx 1 1029 100 4096 Oct 31 14:37 Encodings
    drwxrwxrwx 1 1029 100 4096 Nov 2 14:10 Horloge
    -rwxrwxrwx 1 1022 100 1511424 Nov 02 2007 Illusion opt GA.pps
    drwxrwxrwx 1 1029 100 4096 Nov 11 14:38 LecteurFTP
    drwxrwxrwx 1 1022 100 4096 May 22 2011 Montebello
    -rwxrwxrwx 1 1022 100 6464851 Apr 13 2009 OI n°215 - Avril 2009 - R貥au.pdf

    Cela devrait suffire pour obtenir tous les renseignements que je cherchais.

    Le type (fichier ou dossier), taille, date et nom.
    Gilbert PASQUALINI

  4. #4
    Membre actif
    Inscrit en
    août 2002
    Messages
    334
    Détails du profil
    Informations forums :
    Inscription : août 2002
    Messages : 334
    Points : 156
    Points
    156

    Par défaut

    Je crois avoir été trop optimiste.
    Les dates sont incomplètes :
    Pour les fichiers, il n'y pas l'heure.
    Pour les dossiers, il y a l'heure mais pas l'année.

    La solution d'utiliser la recherche de la date avec FileDate fonctionne bien mais est très longue s'il y a un grand nombre de fichiers.

    Je suis toujours preneur d'une solution permettant d'utiliser
    Code :
    DirectoryListing->Items[i]->ModifiedDate
    Merci d'avance
    Gilbert PASQUALINI

  5. #5
    Expert Confirmé Sénior Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    juillet 2006
    Messages
    10 003
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : juillet 2006
    Messages : 10 003
    Points : 12 789
    Points
    12 789

    Par défaut

    As-tu toujours le message "Aucun analyseur de liste FTP n'a été enregistré" ?
    Si oui, regarde le recensement des parsers
    Si non, euh ? je sais pas
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

    Halte à la ségrégation des Cinémas, VO sur Paris, VF en Banlieue, Abonnement résilié !

  6. #6
    Membre actif
    Inscrit en
    août 2002
    Messages
    334
    Détails du profil
    Informations forums :
    Inscription : août 2002
    Messages : 334
    Points : 156
    Points
    156

    Par défaut

    Non je n'ai plus ce message, mais j'arrête avant d'appeler
    Code :
    DirectoryListing->Items[i]->ModifiedDate
    Je me demande s'il ne faut pas mettre un container de TIdFTPListItems danbs l'appel de la méthode List().
    Gilbert PASQUALINI

  7. #7
    Membre actif
    Inscrit en
    août 2002
    Messages
    334
    Détails du profil
    Informations forums :
    Inscription : août 2002
    Messages : 334
    Points : 156
    Points
    156

    Par défaut

    J'avais pensé qu'il y avait la possibilité d'utiliser :
    Code :
    TIdDirItemType type =IdFTP1->DirectoryListing->Items[i]->ItemType;
    Mais cela m'a ramené le message d'erreur.

    J'ai vu sur Internet un problème du même ordre en Delphi.

    Il n'y a pas la solution…
    Gilbert PASQUALINI

  8. #8
    Expert Confirmé Sénior Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    juillet 2006
    Messages
    10 003
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : juillet 2006
    Messages : 10 003
    Points : 12 789
    Points
    12 789

    Par défaut

    Citation Envoyé par ShaiLeTroll Voir le message
    Faudrait voir si il ne faudrait pas forcer le lancement de la section initialisation (via un pragma link de l'obj) qui enregistre les parser voir IdAllFTPListParsers.pas et IdFTPListParseBase.pas et les équivalents HPP
    il fallait comprendre

    Code :
    #include <IdAllFTPListParsers.hpp>
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

    Halte à la ségrégation des Cinémas, VO sur Paris, VF en Banlieue, Abonnement résilié !

  9. #9
    Membre actif
    Inscrit en
    août 2002
    Messages
    334
    Détails du profil
    Informations forums :
    Inscription : août 2002
    Messages : 334
    Points : 156
    Points
    156

    Par défaut

    Comme je l'ai écrit sur un autre forum, ShaiLe Troll a donné la bonne solution.
    Il fallait ajouter :
    Code :
    #include <IdAllFTPListParsers.hpp>
    Merci encore
    Gilbert PASQUALINI

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

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •