Membres inscrits :2359
Membres en ligne : 0 Invités en ligne : 3 |
Bonjour à tous.
Voici la deuxième technique pour énumérer le contenu d'un dossier : la méthode wxDir::Traverse(...) Pour l'utiliser, il faut d'abord créer une classe dérivée de wxDirTraverser, et redéfinir ses méthodes OnDir et OnFile. Pour chaque entrée trouvée lors de l'énumération, et en fonction de son type (fichier ou dossier), les méthodes OnDir et OnFile sont appelées, avec en paramètre, le nom du fichier ou du dossier concerné : à l'utilisateur d'en faire ce qu'il veut. Lors de l'appel de ces méthodes, il est possible d'interrompre l'énumération. En effet, il faut retourner une valeur, qui peut être : - wxDIR_CONTINUE : La méthode wxDir::Traverse() peut continuer son travail. - wxDIR_STOP : Il faut arrêter l'énumération tout de suite. - wxDIR_IGNORE : Si l'on est dans un sous-répertoire du dossier initial, on arrête l'énumération de son contenu, et on passe au fichier/dossier suivant du répertoire parent. Avantages de cette méthode : - L'utilisateur fait ce qu'il veut avec chaque entrée trouvée : la stocker, l'effacer, ... - Il est possible de stopper à tout moment l'énumération. - On est informé des erreurs lors de la lecture d'un dossier, par une troisième méthode qu'il suffit de redéfinir : OnOpenError(). Inconvénients : - L'énumération est un peu plus longue que pour la méthode wxDir::GetAllFiles(), car il y a appel au wxDirTraverser pour chaque fichier/dossier trouvé. - On est obligé de créer un objet de type wxDir pour pouvoir appeler sa méthode membre wxDir::Traverse(), car elle n'est pas statique comme wxDir::GetAllFiles().
Exemple : lister tous les fichiers (et uniquement les fichiers) du répertoire "C:\Temp" et de ses sous-dossiers, et ajouter les entrées obtenues à une wxListBox au fur et à mesure de leur énumération.
Code wxWidgets:// La classe dérivée de wxDirTraverser
Voilà , c'est tout.
Si vous avez besoin d'autres exemples, n'hésitez pas à en faire la demande, je les ajouterais à ce snippet. En attendant, @+ et bonne prog. Xav'
Il n'y a pas encore de commentaire pour ce snippet.
|