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

Delphi-如何获取目录中所有文件的列表,delphi,opendialog,Delphi,Opendialog,我正在使用delphi,当我执行openpicturedialog时,我需要一个目录中所有文件的列表 i、 例如,当执行“打开”对话框时 我从中选择一个文件,我想要 目录中所有文件的列表 选定文件的名称 您甚至可以建议我从TOpenDialog 多谢各位 更改OpenPictureDialog中的过滤器属性以包括所有文件: All (*.*) 编辑:我认为您无法在打开的(图片)对话框中选择目录,这肯定不是OpenPictureDialog的目的 然后使用和获取该目录中的文件。您可以使用extr

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

i、 例如,当执行“打开”对话框时 我从中选择一个文件,我想要 目录中所有文件的列表 选定文件的名称

您甚至可以建议我从
TOpenDialog

多谢各位

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

All (*.*)
编辑:我认为您无法在打开的(图片)对话框中选择目录,这肯定不是OpenPictureDialog的目的


然后使用和获取该目录中的文件。

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

myPath := extractFilePath(FileName);

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

@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;
Var
路径:字符串;
SR:TSearchRec;
DirList:TStrings;
开始
如果是OpenPictureDialog1
开始
路径:=ExtractFileDir(OpenPictureDialog1.FileName)//获取所选文件的路径
DirList:=TStringList.Create;
尝试
如果FindFirst(路径+'*.*',faArchive,SR)=0,则
开始
重复
目录列表。添加(高级名称)//填写清单
直到FindNext(SR)0;
FindClose(SR);
结束;
//做你的事
最后
DirList.Free;
结束;
结束;
结束;

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

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


TFileListBox和TFilterComboBox位于工具选项板的“Win 3.1”下。Delphi 4中有这些对象。

我选择的不是目录而是文件。。我想要所选文件的父目录的其他文件列表。。仔细阅读问题……如果是这样的话,CaldonCZE有答案。好的。thanx我知道了。您的答案对我很有帮助。我认为您的代码需要尝试最终保护FindFirst/FindClose(SR)。发现一个bug,如果FindFirst('.',faArchive,SR)=0,则需要替换为if FindFirst(Path+'.',faArchive,SR)=0,因为它没有查看路径如何按文件日期对列表进行排序?FindFirst非常过时。为什么不使用TDirectory.GetFiles?很好的选择,但我没有使用delphi 2010…:-(别忘了包括:使用IOUtils;TDirectory.GetFiles接受带有文件掩码的附加参数(第一个是文件夹),如果可以获得文件,例如具有特定扩展名或与文件名中的特定模式匹配的文件。我使用的是Delphi XE4(仍然!),TDirectory可用。
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;
if OpenPictureDialog1.Execute then  
  FileListBox1.Directory := extractFilePath(OpenPictureDialog1.FileName);