2010-06-12 2 views
12

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

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

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

ответ

20

@ Химадри, основная цель 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; 
+0

ОК. спасибо, я понял. Ваш ответ помогает мне. – Himadri

+5

Я думаю, что вашему коду нужно попробовать, наконец, защитить FindFirst/FindClose (SR). –

+2

нашли ошибку, Вы должны заменить если FindFirst ('*. *', FaArchive, SR) = 0, то с если FindFirst (Path + '*. *', FaArchive, SR) = 0, то , потому что Безразлично 't смотреть на путь – AirWolf

2

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

All (*.*) 

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

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

+0

oh нет ... Вы ошибаетесь .... Пожалуйста, взгляните на отредактированный вопрос. – Himadri

+0

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

+0

В этом случае у CaldonCZE есть ответ. –

1

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

myPath := extractFilePath(FileName); 

где имя_файла это имя файла вы выбираете OpenDialog.

34

если вы используете 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; 
+0

Хороший вариант, но я не использую delphi 2010 ... :-( – Himadri

+7

+1 для представления с новым синтаксисом «для». :-) –

+2

Не забудьте включить: использует IOUtils; – WishKnew

 Смежные вопросы

  • Нет связанных вопросов^_^