Delphi - 如何获取目录的所有文件的列表

时间:2010-06-12 05:06:05

标签: delphi opendialog

我正在使用delphi,当我执行openpicturedialog时,我想要一个目录的所有文件的列表。

  

即,执行打开对话框时   我从中选择一个文件,我想要   目录中所有文件的列表   所选文件。

您甚至可以建议我从FileName的{​​{1}}属性获取目录名称 谢谢。

5 个答案:

答案 0 :(得分:41)

如果你使用delphi 2010,那么你可以使用tdirectory.getfiles 首先将ioutils.pas添加到uses子句,然后在事件处理程序中编写以下代码行(除了您在该事件处理程序中已有的代码)

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;

答案 1 :(得分:23)

@Himadri,OpenPictureDialog的主要目标不是选择一个目录,无论如何,如果你正在使用这个对话框,你可以试试这个代码。

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;

答案 2 :(得分:2)

更改OpenPictureDialog中的过滤器属性以包含所有文件:

All (*.*)

编辑:我认为你不能在Open(图片)对话框中选择一个目录,无论如何它肯定不是OpenPictureDialog的目的。也许this就是你所寻求的。

然后使用FindFirstFindNext获取此目录中的文件。

答案 3 :(得分:1)

您可以使用extractFilePath函数获取目录名称:

myPath := extractFilePath(FileName);

其中FileName是您通过OpenDialog选择的文件的名称。

答案 4 :(得分:1)

if OpenPictureDialog1.Execute then  
  FileListBox1.Directory := extractFilePath(OpenPictureDialog1.FileName);

您还可以使用链接到FileListBox的FilterComboBox来过滤文件类型。

TFileListBox和TFilterComboBox在“ Win 3.1”下的工具面板中。在Delphi 4中有这些对象。