Delphi - как получить список всех файлов каталога - PullRequest
18 голосов
/ 12 июня 2010

Я работаю с delphi, мне нужен список всех файлов каталога, когда я запускаю openpicturedialog.

т.е. когда открывается диалоговое окно и я выбираю из него один файл, мне нужен список всех файлов из каталога выбранного файла.предложите мне получить имя каталога из FileName свойства TOpenDialog
Спасибо.

Ответы [ 4 ]

41 голосов
/ 12 июня 2010

если вы используете delphi 2010, тогда вы можете использовать tdirectory.getfiles, сначала добавьте ioutils.pas в предложение использования, а затем написать следующую строку кода в обработчике событий (в дополнение к коду, который вы уже используете в этом обработчике событий)

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;
24 голосов
/ 12 июня 2010

@ Химадри, основной целью 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 голосов
/ 12 июня 2010

Измените свойство filter в OpenPictureDialog, чтобы включить все файлы:

All (*.*)

Редактировать : я не думаю, что вы можете выбрать каталог вДиалог Open (Picture), он, безусловно, не является целью OpenPictureDialog.Возможно, это - это то, что вы ищете.

Затем используйте FindFirst и FindNext , чтобы получить файлы в этом каталоге.

1 голос
/ 12 июня 2010

Вы можете использовать функцию extractFilePath, чтобы получить имя каталога:

myPath := extractFilePath(FileName);

, где FileName - имя файла, выбранного вами OpenDialog.

...