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

问题描述 投票:0回答:6

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

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

您甚至可以建议我从

FileName
TOpenDialog
属性获取目录名称 谢谢。

delphi opendialog
6个回答
56
投票

如果您使用的是 Delphi 2010,那么您可以使用 TDirectory.GetFiles

首先将

UIUtils
添加到
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;

33
投票

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

3
投票

更改 OpenPictureDialog 中的 filter 属性以包含所有文件:

All (*.*)

编辑:我不认为你可以在 Open(Picture)Dialog 中选择目录,无论如何它肯定不是 OpenPictureDialog 的目的。

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


2
投票

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

myPath := extractFilePath(FileName);

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


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

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

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


0
投票

通过这段代码,你可以获取你想要的文件夹中文件的“路径”信息。您可以使用 Delphi 的

System.IOUtils
库来实现此目的。

uses 
...
 System.IOUtils;
...

var List : TStringlist;
var File : String := '';
var Path : string := IncludeTrailingPathDelimiter(Edit1.Text);

Lista := TStringList.Create;
try
    for File in TDirectory.GetFiles(Path) do
        List.Add(File); // Add all file names to list
finally
    FreeAndNil(Lista);
end;
© www.soinside.com 2019 - 2024. All rights reserved.