Подтвердить что ты не робот

Delphi - как получить список всех файлов каталога

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

i.e., Когда открыто диалоговое окно я выбираю один файл из него, я хочу, чтобы список всех файлов из каталога выбранного файла.

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

4b9b3361

Ответ 1

@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

если вы используете delphi 2010, тогда вы можете использовать tdirectory.getfiles сначала добавьте предложение ioutils.pas to 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;

Ответ 3

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

All (*.*)

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

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

Ответ 4

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

myPath := extractFilePath(FileName);

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