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

WinDev Discussion :

Lister les extensions de fichier dans un répertoire [WD14]


Sujet :

WinDev

  1. #1
    Membre régulier
    Consultant informatique
    Inscrit en
    Octobre 2006
    Messages
    240
    Détails du profil
    Informations personnelles :
    Âge : 68

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 240
    Points : 103
    Points
    103
    Par défaut Lister les extensions de fichier dans un répertoire
    Bjr à tous
    Je souhaite dans une table afficher les extensions de fichier présentes dans un répertoire. Jusque là pas de souci mais je voudrais qu'il n'y ait pas de doublon. Donc que si 3 fichiers *.bat sont présents, l'extension *.bat n'apparaisse qu'une fois dans la table. Ceci afin de donner la possibilité à l'utilisateur de sélectionner cette extension pour supprimer tous les fichiers de cette extension dans une liste.
    Existe-t-il une fonction ou un code particulier qui ferait ce genre de chose??
    Voici le code qui affiche les fichiers
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    RepSélectionné est une chaîne  //vient d'une table permettant de sélectionner un ou des répertoires précis.
    i,j,k sont des entiers
    UnFichier, ResListeFichier sont des chaînes
    POUR k=1 _A_ TABLE_Répertoires..Occurrence
    	RepSélectionné =TABLE_Répertoires.COL_PathFichiers[k]+"\*.*"
    	ResListeFichier = fListeFichier(RepSélectionné,frInformationComplète+frInterruptible+frNonRécursif)
    	POUR TOUTE CHAINE UnFichier DE ResListeFichier SEPAREE PAR RC
    		UnFichier = fExtraitChemin(UnFichier,fExtension )	
    	FIN
    FIN
    Merci d'avance pour votre éclairage.

  2. #2
    Membre averti
    Développeur informatique
    Inscrit en
    Avril 2010
    Messages
    256
    Détails du profil
    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2010
    Messages : 256
    Points : 435
    Points
    435
    Par défaut
    Bonjour,

    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
     
    RepSélectionné est une chaîne  //vient d'une table permettant de sélectionner un ou des répertoires précis.
    i,j,k sont des entiers
    UnFichier, ResListeFichier sont des chaînes
    ListeExt est une chaine
    POUR k=1 _A_ TABLE_Répertoires..Occurrence
    	RepSélectionné =TABLE_Répertoires.COL_PathFichiers[k]+"\*.*"
    	ResListeFichier = fListeFichier(RepSélectionné,frInformationComplète+frInterruptible+frNonRécursif)
    	POUR TOUTE CHAINE UnFichier DE ResListeFichier SEPAREE PAR RC
    		UnFichier = fExtraitChemin(UnFichier,fExtension )
     
    <div style="margin-left:40px"><div style="margin-left:40px">SI Position(ListeExt,UnFichier)=0</div></div>
    <div style="margin-left:40px"><div style="margin-left:40px">      ListeExt+=[;]+UnFichier</div></div>
    <div style="margin-left:40px"><div style="margin-left:40px">FIN</div></div>	FIN
    FIN
    Par exemple...

  3. #3
    Membre régulier
    Consultant informatique
    Inscrit en
    Octobre 2006
    Messages
    240
    Détails du profil
    Informations personnelles :
    Âge : 68

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 240
    Points : 103
    Points
    103
    Par défaut
    Merci mais cela ne donne pas de résultat...
    Le caractère ";" pose problème, je l'ai remplacé par "RC" puisque c'est la séparation dans la liste (table), là pas d'erreur au débogage mais rien ne se passe correctement non plus. Il affiche toutes les lignes et j'ai des doublons !
    Je reste preneur car mon idée de "tablecherche" ne me donne pas de résultat non plus. Je crois que cela vient de ce qu'il compare toute la chaine de "UnFichier" et pas uniquement l'extension. Forcément les fichiers étant différents, il ne trouvera jamais le même...

    merci

  4. #4
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 073
    Points : 9 521
    Points
    9 521
    Par défaut
    Bonjour,

    il ne faut pas mettre frInformationComplète dans le flisteRépertoire. Un code dans le genre :
    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
    RepSélectionné est une chaîne  //vient d'une table permettant de sélectionner un ou des répertoires précis.
    i,j,k sont des entiers
    UnFichier, ResListeFichier sont des chaînes
    ListeExt est une chaine
    POUR k=1 _A_ TABLE_Répertoires..Occurrence
    	RepSélectionné =TABLE_Répertoires.COL_PathFichiers[k]+"\*.*"
    	ResListeFichier = fListeFichier(RepSélectionné,frInterruptible+frNonRécursif)
    	POUR TOUTE CHAINE UnFichier DE ResListeFichier SEPAREE PAR RC
    		UnFichier = fExtraitChemin(UnFichier,fExtension )
     
     
            SI Position(ListeExt,UnFichier)=0
     
            ListeExt+=UnFichier + ";"
     
            FIN
     
    	FIN
    FIN
    devrait mieux fonctionner.

    Ami calmant, J.P ;-)

  5. #5
    Membre confirmé Avatar de PaulNero
    Homme Profil pro
    DBA Senior Oracle and SQL SERVER
    Inscrit en
    Octobre 2010
    Messages
    416
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Inde

    Informations professionnelles :
    Activité : DBA Senior Oracle and SQL SERVER
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2010
    Messages : 416
    Points : 470
    Points
    470
    Par défaut
    Bonjour les gars,
    moi effectivement j'avais un doute sur le "[;]".Quand j'ai vu Jurassik Pork l'enlever ça conforté mes soupçons.
    D'autre part,que contient ListeExt avant la ligne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     SI Position(ListeExt,UnFichier)=0
    ?

    il me semble que d'après l'aide position (<chaine initiale>, <chaine à comparer>)= valeur renvoyer
    Donc quand vous déclarez que ListExt est une chaine mais vous ne l'avez pas initilisée.A moins que ce soit une tournure algorithmique que je ne connais pas et que je suis curieux de connaitre ce jour?

    Cordialement

  6. #6
    Membre éprouvé Avatar de miripesage
    Homme Profil pro
    gerant
    Inscrit en
    Novembre 2009
    Messages
    725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : gerant
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2009
    Messages : 725
    Points : 1 156
    Points
    1 156
    Par défaut
    Bonjour, j'ai pas essayé, mais je crois que cela résoud le problème :

    Citation Envoyé par SevenSoftware Voir le message
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    RepSélectionné est une chaîne  //vient d'une table permettant de sélectionner un ou des répertoires précis.
    i,j,k sont des entiers
    UnFichier, ResListeFichier, ListeExt,sExtension sont des chaînes
    POUR k=1 _A_ TABLE_Répertoires..Occurrence
    	RepSélectionné =TABLE_Répertoires.COL_PathFichiers[k]+"\*.*"
    	ResListeFichier = fListeFichier(RepSélectionné,frInformationComplète+frInterruptible+frNonRécursif)
    	POUR TOUTE CHAINE UnFichier DE ResListeFichier SEPAREE PAR RC
    		sExtension = fExtraitChemin(UnFichier,fExtension )
    	
    
    SI Position(ListeExt,sExtension)=-1
    ListeAjoute(ListeExt, "sExtension")
    FIN
    FIN FIN
    Par exemple...

  7. #7
    Membre régulier
    Consultant informatique
    Inscrit en
    Octobre 2006
    Messages
    240
    Détails du profil
    Informations personnelles :
    Âge : 68

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 240
    Points : 103
    Points
    103
    Par défaut
    Merci cela fonctionne après ajout de cette ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ListeExt+=UnFichier + ";"
    
    TableAjoute(TABLE_Extension,UnFichier)
    Toutefois, sans être trop exigeant, comment faire en sorte qu'il ne respecte pas la casse? En effet, je trouve dans cette table ".dll" et ".DLL" ou ".exe" et ".EXE".
    Lorsque j'ajoute "SansCasse" à la ligne de code 12, le débogueur me renvoie une erreur disant que le paramètre 3 n'est pas autorisé dans cette syntaxe qui ne supporte pas les constantes d'option. L'aide pourtant donne bien cette syntaxe à moins que... je n'y comprenne pas suffisamment. Normal je ne suis pas un PRO !! Au passage un petit brin d'explications sur cette ligne 12 et 14 me ferait bien plaisir.

    Merci tout de même

    "Le Savoir est bien, le partager est encore mieux..."

  8. #8
    Membre confirmé Avatar de PaulNero
    Homme Profil pro
    DBA Senior Oracle and SQL SERVER
    Inscrit en
    Octobre 2010
    Messages
    416
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Inde

    Informations professionnelles :
    Activité : DBA Senior Oracle and SQL SERVER
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2010
    Messages : 416
    Points : 470
    Points
    470
    Par défaut
    J'ai vraiment du mal à vous suivre vous et votre code!!
    la dernière ligne ajoutée donne quoi comme finalité au code?


    cordialement

  9. #9
    Membre éprouvé Avatar de miripesage
    Homme Profil pro
    gerant
    Inscrit en
    Novembre 2009
    Messages
    725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : gerant
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2009
    Messages : 725
    Points : 1 156
    Points
    1 156
    Par défaut
    Citation Envoyé par LuckyLuke56 Voir le message
    Merci cela fonctionne après ajout de cette ligne, mais...
    [/I]
    SVP, postez votre code qui marche.

  10. #10
    Membre régulier
    Consultant informatique
    Inscrit en
    Octobre 2006
    Messages
    240
    Détails du profil
    Informations personnelles :
    Âge : 68

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 240
    Points : 103
    Points
    103
    Par défaut
    Désolé Miripesage, nos infos se sont croisées.
    Tu as raison ton code est correct.
    Et je comprends dès lors mieux ce code...

    En réponse à PaulNero, cette dernière ligne du code ajoute dans la table les différentes extensions présentes dans le répertoire sélectionné.

    Il reste, si je peux me permettre, à trouver comment ne pas respecter la casse pour éviter tous les doublons.

    Merci à tous.

  11. #11
    Membre régulier
    Consultant informatique
    Inscrit en
    Octobre 2006
    Messages
    240
    Détails du profil
    Informations personnelles :
    Âge : 68

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 240
    Points : 103
    Points
    103
    Par défaut
    Sans vouloir faire de chantage, j'ajouterai bien volontiers ce code et pointerai résolu dès solution à mon dernier souci.
    No panique, c'est le week-end et il fait super beau sous la pluie !!!


  12. #12
    Membre éprouvé Avatar de miripesage
    Homme Profil pro
    gerant
    Inscrit en
    Novembre 2009
    Messages
    725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : gerant
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2009
    Messages : 725
    Points : 1 156
    Points
    1 156
    Par défaut
    Voyez ceci :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    RepSélectionné est une chaîne  //vient d'une table permettant de sélectionner un ou des répertoires précis.
    i,j,k sont des entiers
    UnFichier, ResListeFichier, ListeExt,sExtension sont des chaînes
    POUR k=1 _A_ TABLE_Répertoires..Occurrence
    	RepSélectionné =TABLE_Répertoires.COL_PathFichiers[k]+"\*.*"
    	ResListeFichier = fListeFichier(RepSélectionné,frInformationComplète+frInterruptible+frNonRécursif)
    	POUR TOUTE CHAINE UnFichier DE ResListeFichier SEPAREE PAR RC
    		sExtension = fExtraitChemin(UnFichier,fExtension )
    sExtension..OptionTri = ccSansCasse
    	SI Position(ListeExt,sExtension)=-1 
        
         ListeAjoute(ListeExt, "sExtension")	FIN

  13. #13
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 073
    Points : 9 521
    Points
    9 521
    Par défaut
    il faut faire un ChaîneFormate sur la ligne du fExtraitChemin comme par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UnFichier =  ChaîneFormate(fExtraitChemin(UnFichier,fExtension ),ccMinuscule)
    Ami calmant, J.P

  14. #14
    Membre régulier
    Consultant informatique
    Inscrit en
    Octobre 2006
    Messages
    240
    Détails du profil
    Informations personnelles :
    Âge : 68

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 240
    Points : 103
    Points
    103
    Par défaut
    Tout le monde va y trouver son compte...
    Voici le code qui marche parfaitement en respectant la casse.
    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
     
    RepSélectionné est une chaîne  //vient d'une table permettant de sélectionner un ou des répertoires précis.
    k est un entier
    UnFichier, ResListeFichier,ListeExt sont des chaînes
    POUR k=1 _A_ TABLE_Répertoires..Occurrence
    	RepSélectionné =TABLE_Répertoires.COL_PathFichiers[k]+"\*.*"//La sélection du répertoire s'opère via une
    	ResListeFichier = fListeFichier(RepSélectionné,frInterruptible+frNonRécursif)
    	POUR TOUTE CHAINE UnFichier DE ResListeFichier SEPAREE PAR RC
    		UnFichier =  ChaîneFormate(fExtraitChemin(UnFichier,fExtension ),ccMinuscule)
    		SI Position(ListeExt,UnFichier)=0
    		ListeExt+=UnFichier + ";" //ajoute l'extension à la liste en séparant par un ;
    		TableAjoute(TABLE_Extension,UnFichier) // ajoute la liste dans la table
    		FIN	
    	FIN
    FIN
    Merci à tous pour vos interventions judicieuses.

    "Le Savoir est bien, le partager est encore mieux..."

  15. #15
    Membre confirmé Avatar de PaulNero
    Homme Profil pro
    DBA Senior Oracle and SQL SERVER
    Inscrit en
    Octobre 2010
    Messages
    416
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Inde

    Informations professionnelles :
    Activité : DBA Senior Oracle and SQL SERVER
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2010
    Messages : 416
    Points : 470
    Points
    470
    Par défaut
    Votre code fait ce que vous voulez, donc il marche, j'en suis fort satisfait.Par contre que contient ListeExt avant cette ligne:
    SI Position(ListeExt,UnFichier)=0.
    Je vois bien ce que contient Unfichier, mais je ne sais pas ce qu'il y a dans ListeExt.
    si vous faites trace juste après la ligne citée plus haut de cette variable que vous donne t-elle?

    cordialement.

  16. #16
    Membre régulier
    Consultant informatique
    Inscrit en
    Octobre 2006
    Messages
    240
    Détails du profil
    Informations personnelles :
    Âge : 68

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 240
    Points : 103
    Points
    103
    Par défaut
    Voici :
    En fait la liste se garni à chaque lecture de fichier par une nouvelle ligne qui si l'extension n'est pas déjà recensée dans les lignes précédentes, s'ajoute sinon la ligne reste identique. Donc lorsque vous voyez plusieurs lignes identiques, vous devez vous dire que le fichier lu à une extension déjà connue dans cette liste.
    Vous pouvez le voir dans la capture d'écran jointe ainsi que le résultat dans la table.

    Bien à vous.
    Images attachées Images attachées   

  17. #17
    Membre confirmé Avatar de PaulNero
    Homme Profil pro
    DBA Senior Oracle and SQL SERVER
    Inscrit en
    Octobre 2010
    Messages
    416
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Inde

    Informations professionnelles :
    Activité : DBA Senior Oracle and SQL SERVER
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2010
    Messages : 416
    Points : 470
    Points
    470
    Par défaut
    Je voyais bien de part le code qu'on obtiendrait les résultats ci-joints.
    Par contre, ce qui m'emmerdais c'est que vous testiez une variable initiale qui est une chaine mais n'a pas été initialisée.Par contre, j'ai compris comment windev a gérer les deux lignes qui me posaient problème.


    bonne continuation

  18. #18
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 073
    Points : 9 521
    Points
    9 521
    Par défaut
    Bonjour,
    LuckyLuke56, il faudra que tu fasses breveter ta syntaxe du SI auprès de PCSOFT . En effet le SI sans utilisation de ALORS n'est pas indiqué dans la documentation PCSOFT ( A moins que ça ait échappé à mes ). Mais ce qui est étonnant c'est qu'il n'y a pas d'erreur de syntaxe à la compilation et que ça marche

    Ami calmant, J.P

  19. #19
    Membre régulier
    Consultant informatique
    Inscrit en
    Octobre 2006
    Messages
    240
    Détails du profil
    Informations personnelles :
    Âge : 68

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 240
    Points : 103
    Points
    103
    Par défaut
    Merci pour ta perspicacité Jurassic Pork. Syntaxiquement, je suis entièrement d'accord avec toi, l'origine est à trouver dans mon "copier-coller" mais je viens de revérifier ce code et tu peux me croire CELA FONCTIONNE tant avec "alors" que sans.
    Bizarre, bizarre !
    Je l'ai toutefois ajouté pour ne pas me poser des questions dans mes vieux jours...
    Merci et @ +

  20. #20
    Expert confirmé
    Homme Profil pro
    ?
    Inscrit en
    Juillet 2002
    Messages
    2 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ?

    Informations forums :
    Inscription : Juillet 2002
    Messages : 2 379
    Points : 4 496
    Points
    4 496
    Par défaut
    Bonjour
    Citation Envoyé par jurassic pork Voir le message
    En effet le SI sans utilisation de ALORS n'est pas indiqué dans la documentation PCSOFT
    Oui, mais ça a toujours été toléré. J'ai repris une appli chez un client où il n'y avait aucun ALORS et cette appli est passée de la version WD5.5 jusqu'en WD15

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Surveiller et lister la création de fichiers dans un répertoire
    Par remyclem dans le forum Développement de jobs
    Réponses: 4
    Dernier message: 07/06/2012, 14h24
  2. [AC-2010] Lister les noms des fichiers d'un répertoire
    Par Invité dans le forum VBA Access
    Réponses: 2
    Dernier message: 23/05/2011, 13h51
  3. Réponses: 1
    Dernier message: 20/04/2011, 21h05
  4. Réponses: 2
    Dernier message: 03/09/2008, 17h14
  5. Lister les dossiers et fichiers d'un répertoire
    Par scorpia dans le forum ASP
    Réponses: 2
    Dernier message: 11/04/2006, 18h50

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