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

iswrvxsc  于 2023-04-05  发布在  其他
关注(0)|答案(6)|浏览(373)

我正在使用 Delphi ,我想一个目录的所有文件的列表,当我执行openpicturedialog。
即,当打开对话框执行,我从它选择一个文件,我想从所选文件的目录中的所有文件的列表.
你甚至可以建议我从TOpenDialogFileName属性中获取目录名
谢谢你。

643ylb08

643ylb081#

如果您使用 Delphi 2010,那么您可以使用tdirectory.getfiles,首先将ioutils.pass添加到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;
pobjuy32

pobjuy322#

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

c9x0cxw03#

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

All (*.*)

编辑:我觉得在打开(图片)对话框中是不能选择目录的,这肯定不是OpenPictureDialog的目的。

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

ztmd8pv5

ztmd8pv54#

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

myPath := extractFilePath(FileName);

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

8tntrjer

8tntrjer5#

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

也可以使用链接到FileListBox的FilterComboBox来筛选文件类型。
TFileListBox和TFilterComboBox在“Win3.1”下的工具面板中。从 Delphi 开始就有这些对象。

lztngnrs

lztngnrs6#

使用此代码,您可以获得所需文件夹中文件的“路径”信息。您可以使用 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;

相关问题