2010-06-12 5 views
12

Je travaille avec Delphi, je veux une liste de tous les fichiers d'un répertoire lorsque j'exécute openpicturedialog.Delphi - comment obtenir une liste de tous les fichiers du répertoire

savoir Lorsque le dialogue ouvert est exécuté et je sélectionne un fichier à partir, je veux la liste de tous les fichiers du répertoire du fichier sélectionné.

Vous pouvez même me suggérer pour obtenir le nom du répertoire de FileName propriété de TOpenDialog
Je vous remercie.

Répondre

20

@Himadri, l'objectif principal de OpenPictureDialog n'est pas de sélectionner un répertoire, de toute façon si vous utilisez cette boîte de dialogue avec un autre but, vous pouvez essayer ce code.

Var 
    Path : String; 
    SR  : TSearchRec; 
    DirList : TStrings; 
begin 
    if OpenPictureDialog1.Execute then 
    begin 
    Path:=ExtractFileDir(OpenPictureDialog1.FileName); //Get the path of the selected file 
    DirList:=TStringList.Create; 
    try 
      if FindFirst(Path + '*.*', faArchive, SR) = 0 then 
      begin 
      repeat 
       DirList.Add(SR.Name); //Fill the list 
      until FindNext(SR) <> 0; 
      FindClose(SR); 
      end; 

    //do your stuff 

    finally 
    DirList.Free; 
    end; 
    end; 

end; 
+0

OK. merci j'ai compris. Votre réponse m'aide. – Himadri

+5

Je pense que votre code a besoin d'un essai pour finalement protéger FindFirst/FindClose (SR). –

+2

trouvé un bug, vous devez remplacer si FindFirst ('*. *', FaArchive, SR) = 0 puis avec si FindFirst (chemin + '*. *', FaArchive, SR) = 0 alors parce qu'il doesn regarde pas le chemin – AirWolf

2

Modifier le filtre propriété dans votre OpenPictureDialog inclure tous les fichiers:

All (*.*) 

Modifier: Je ne pense pas que vous pouvez sélectionner un répertoire dans un Ouvrir (image) de dialogue, il ISN sûrement 't le but d'un OpenPictureDialog de toute façon. Peut-être this est ce que vous cherchez.

Ensuite, utilisez FindFirst et FindNext pour obtenir les fichiers dans ce répertoire.

+0

oh non ... Vous vous méprenez .... S'il vous plaît jeter un oeil à la question édité. – Himadri

+0

Je ne sélectionne pas un répertoire mais un fichier .. et je veux une autre liste de fichiers du répertoire parent du fichier sélectionné .. lire attentivement la question ... – Himadri

+0

Dans ce cas, CaldonCZE a la réponse. –

1

Vous pouvez utiliser la fonction ExtractFilePath pour obtenir le nom du répertoire:

myPath := extractFilePath(FileName); 

où FileName est le nom de fichier que vous choisissez par OpenDialog.

34

si vous utilisez delphi 2010, vous pouvez utiliser tdirectory.getfiles d'abord ajouter à ioutils.pas clause uses puis écrire la ligne suivante de code dans le gestionnaire d'événements (en plus de votre code déjà en cet événement gestionnaire)

+0

Bonne option mais je n'utilise pas delphi 2010 ... :-( – Himadri

+7

+1 pour représenter avec la nouvelle syntaxe "for". :-) –

+2

N'oubliez pas d'inclure: uses IOUtils; – WishKnew

Questions connexes