Récupérer un path [Résolu]

cs_giallo 6 Messages postés lundi 6 septembre 2004Date d'inscription 16 février 2005 Dernière intervention - 15 févr. 2005 à 11:34 - Dernière réponse : ni69 1529 Messages postés samedi 12 juin 2004Date d'inscription 5 juillet 2010 Dernière intervention
- 16 févr. 2005 à 19:24
Bonjour,

(Je suis débutant) j''aimerais ajouter une fonctionnalité dans mon appli et je n'ai aucune idée de comment faire...

Je voudrais laisser à l'utilisateur la possibilité de lister tous les
fichiers d'un répértoire (bien entendu il choisirait le répertoire)

J'ai utilisé le composant OpenDiaolog je peux bien choisir un
répertoire mais comment faire pour mémoriser le chemin?? une fois que
cette boite de dialogue se ferme??



Merci
Afficher la suite 

10 réponses

Répondre au sujet
cs_giallo 6 Messages postés lundi 6 septembre 2004Date d'inscription 16 février 2005 Dernière intervention - 15 févr. 2005 à 22:46
+3
Utile
hello

Ok Avant d'essayer avec un DirectoryListBox et pour ne pas devoir modifier tout mon code j 'ai quand même essayer ça ...

begin
opendialog1.InitialDir:= getcurrentdir;
opendialog1.Filter:= 'fichier mp3(*.mp3)|*.mp3';
ExtractFilePath(OpenDialog1.Filename);
opendialog1.Execute;

Malheureusement je ne récupère pas un chemin mais une suite de caractères très bizarre!!!
Et je ne sais pas d'ou vient l'erreur!?

Quelques info encore sur mon projet:
Il s'agit de faire une Mp3thèque
Ici l'utilisateur doit indiquer dans quel répertoire se trouve ses chansons ensuite à l'aide du chemin retourné par le OpenDialog j'utiliserai une double boucle et un composant ID3 qui me permettront de lire les informations contenues dans chaque fichier se trouvant dans ce répertoire et d'ajouter ces infos dans une base de données.

Voilà en gros...
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_giallo
ni69 1529 Messages postés samedi 12 juin 2004Date d'inscription 5 juillet 2010 Dernière intervention - 16 févr. 2005 à 14:51
+3
Utile
Mais l'utilisation d'un DirectoryListBox ou d'un ShellTreeView me semble avant tout préférable...


@+
Bonne Prog'
Nico



<HR>
N'oubliez pas de cliquer sur Réponse acceptée lorsque la réponse vous convient !
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de ni69
sovitec 49 Messages postés mardi 18 mai 2004Date d'inscription 24 juillet 2006 Dernière intervention - 15 févr. 2005 à 12:37
0
Utile
Bonjour,



Tant que le dialogue n'est pas détruit le résultat est conservé dans la propriété Filename.

Ton code devrait donc ressembler à



if MyOpenDialog.Execute then

MonFichier := MyOpenDialog.Filename;



tout simplement
Commenter la réponse de sovitec
ni69 1529 Messages postés samedi 12 juin 2004Date d'inscription 5 juillet 2010 Dernière intervention - 15 févr. 2005 à 18:27
0
Utile
Si tu désires utiliser un OpenDialog, comme le dit sovitec, tu peux te servir de OpenDialog.Filename pour avoir le chemin du fichier, mais dans ta question, je crois comprendre que tu veux donner à l'utilisateur le choix d'un répertoire, et pas d'un fichier. Donc si tu utilises un OpenDialog, fais ceci : ExtractFilePath(OpenDialog.Filename) pour avoir le nom du répertoire sélectionné dans l'OpenDialog.


Un OpenDialog n'est pas l'idéal pour sélectionner un répertoire... Tu as donc d'autres solutions, je pense principalement à l'utilisation d'un DirectoryListBox ou d'un ShellTreeView.
Pour avoir accès au nom des répertoires sélectionnés fais ceci :
DirectoryListBox.Directory; // pour un DirectoryListBox

ou
ShellTreeView.Path; // pour un ShellTreeView


Ensuite, pour lister les fichiers du répertoire, tu as deux composants correspondants aux deux cités ci-dessus :
- si tu utilises un DirectoryListBox pour sélectionner un répertoire, utilise un FileListBox pour visualiser les fichiers.
- si tu utilises un ShellTreeView pour sélectionner un répertoire, utilise un ShellListView pour visualiser les fichiers.
La liaison entre les deux se fait automatiquement si tu mets "FileListBox1" dans la propriété "FileList" du DirectoryListBox ou alors "ShellListView1" dans la propriété "ShellListView" de ton ShellTreeView.
Rien qu'en faisant ça, tu as déjà un bon petit explorateur Windows


Tu as aussi la possiblité d'ajouter des filtres de format de fichier et tout, mais cela ne correspond plus à la question
Si tu veux des précisions, n'hésite pas à demander, on est là pour ça

@+
Bonne Prog'
Nico



<HR>
N'oubliez pas de cliquer sur Réponse acceptée lorsque la réponse vous convient !
Commenter la réponse de ni69
cs_giallo 6 Messages postés lundi 6 septembre 2004Date d'inscription 16 février 2005 Dernière intervention - 15 févr. 2005 à 22:19
0
Utile
hello

Ok merci pour vos réponses je vais essayer d'utiliser un DirectoryListBox en fait ça correspond plus à ce dont j'ai besoin.

Je vous tiendrais au courant en cas de succès...(ou d'echec aussi!!)

Bonne soirée
Commenter la réponse de cs_giallo
cs_giallo 6 Messages postés lundi 6 septembre 2004Date d'inscription 16 février 2005 Dernière intervention - 15 févr. 2005 à 22:45
0
Utile
hello

Ok Avant d'essayer avec un DirectoryListBox et pour ne pas devoir modifier tout mon code j 'ai quand même essayer ça ...

begin
opendialog1.InitialDir:= getcurrentdir;
opendialog1.Filter:= 'fichier mp3(*.mp3)|*.mp3';
ExtractFilePath(OpenDialog1.Filename);
opendialog1.Execute;

Malheureusement je ne récupère pas un chemin mais une suite de caractères très bizarre!!!
Et je ne sais pas d'ou vient l'erreur!?

Quelques info encore sur mon projet:
Il s'agit de faire une Mp3thèque
Ici l'utilisateur doit indiquer dans quel répèrtoire se trouve ses chansons ensuite à l'aide du chemin retourné par le OpenDialog j'utiliserai une double boucle et un composant ID3 qui me permettront de lire les informations contenues dans chaque fichier se trouvant dans ce répertoire et d'ajouter ces infos dans une base de données.

Voilà en gros...
Commenter la réponse de cs_giallo
sovitec 49 Messages postés mardi 18 mai 2004Date d'inscription 24 juillet 2006 Dernière intervention - 16 févr. 2005 à 14:31
0
Utile
Il faut inverser les 2 dernières lignes de ton code, le Filename n'est rempli qu'après le Execute :



opendialog1.InitialDir:= getcurrentdir;
opendialog1.Filter:= 'fichier mp3(*.mp3)|*.mp3';
opendialog1.Execute;

ExtractFilePath(OpenDialog1.Filename);
Commenter la réponse de sovitec
ni69 1529 Messages postés samedi 12 juin 2004Date d'inscription 5 juillet 2010 Dernière intervention - 16 févr. 2005 à 14:49
0
Utile
Je rajouterais même :

opendialog1.InitialDir:= getcurrentdir;
opendialog1.Filter:= 'fichier mp3(*.mp3)|*.mp3'; // REMARQUE : ceci peut être mis dans les propriétés de l'opendialog via l'inspecteur de propriétés lors de la conception...
if opendialog1.Execute
then
begin

ExtractFilePath(OpenDialog1.Filename);
[...traitement des données...]
end;

car si tu ne rajoutes pas cette condition et que l'utilisateur clique sur annuler, ça renvoie le path quand même et ça continue à traiter les infos


@+
Bonne Prog'
Nico



<HR>
N'oubliez pas de cliquer sur Réponse acceptée lorsque la réponse vous convient !
Commenter la réponse de ni69
cs_giallo 6 Messages postés lundi 6 septembre 2004Date d'inscription 16 février 2005 Dernière intervention - 16 févr. 2005 à 19:12
0
Utile
Hello,



Un grand merci à tous les 2 le problème est résolu...

Comme tu as bcp parlé de DirectoryListBox j'ai essayé et c'est vrai que
c'est exactement ce qu'il me fallait! (heureusement que t'as insisté...)



Bonne soirée

A+
Commenter la réponse de cs_giallo
ni69 1529 Messages postés samedi 12 juin 2004Date d'inscription 5 juillet 2010 Dernière intervention - 16 févr. 2005 à 19:24
0
Utile
Content d'avoir résolu ton problème !


@+
Bonne Prog'
Nico



<HR>
N'oubliez pas de cliquer sur Réponse acceptée lorsque la réponse vous convient !
Commenter la réponse de ni69

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.