web-dev-qa-db-fra.com

Delphi - comment obtenir une liste de tous les fichiers du répertoire

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

c'est-à-dire, lorsque la boîte de dialogue ouverte est exécutée et que je sélectionne un fichier, je veux la liste de tous les fichiers du répertoire du fichier sélectionné.

Vous pouvez même me suggérer d'obtenir le nom du répertoire à partir de FileName propriété de TOpenDialog
Merci.

19
Himadri

@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;
26
RRUZ

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

uses IOUtils;

 var
    path : string;
begin
    for Path in TDirectory.GetFiles(OpenPictureDialog1.filename)  do
        Listbox1.Items.Add(Path);{assuming OpenPictureDialog1 is the name you gave to your OpenPictureDialog control}
end;
42
Omair Iqbal

Modifiez la propriété filter dans votre OpenPictureDialog pour inclure tous les fichiers:

All (*.*)

Edit : Je ne pense pas que vous puissiez sélectionner un répertoire dans une boîte de dialogue Open (Picture), ce n'est certainement pas le but d'un OpenPictureDialog de toute façon. this est peut-être ce que vous cherchez.

Utilisez ensuite FindFirst et FindNext pour obtenir les fichiers dans ce répertoire.

2
Jens Björnhager
if OpenPictureDialog1.Execute then  
  FileListBox1.Directory := extractFilePath(OpenPictureDialog1.FileName);

Vous pouvez également utiliser un FilterComboBox lié à FileListBox pour filtrer le type de fichier.

TFileListBox et TFilterComboBox sont dans la palette d'outils sous "Win 3.1". De Delphi 4, il y a ces objets.

1
Petrus

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

myPath := extractFilePath(FileName);

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

1
Ondra C.