web-dev-qa-db-ja.com

Delphi-ディレクトリのすべてのファイルのリストを取得する方法

私はdelphiを使用しています。openpicturedialogを実行すると、ディレクトリのすべてのファイルのリストが必要です。

つまり、開くダイアログが実行され、そこから1つのファイルを選択すると、選択したファイルのディレクトリからすべてのファイルのリストが必要になります。

FileNameTOpenDialogプロパティからディレクトリ名を取得するように提案することもできます
ありがとうございました。

19
Himadri

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

delphi 2010を使用する場合は、tdirectory.getfilesを使用して、最初にioutils.pasを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;
42
Omair Iqbal

OpenPictureDialogのfilterプロパティを変更して、すべてのファイルを含めます。

All (*.*)

Edit:Open(Picture)Dialogでディレクトリを選択できるとは思いません。とにかくOpenPictureDialogの目的ではないのです。たぶん this はあなたが求めるものです。

次に FindFirst および FindNext を使用して、このディレクトリ内のファイルを取得します。

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

FileListBoxにリンクされたFilterComboBoxを使用して、ファイルタイプをフィルタリングすることもできます。

TFileListBoxとTFilterComboBoxは、「Win 3.1」のツールパレットにあります。 Delphi 4以降、これらのオブジェクトがあります。

1
Petrus

ExtractFilePath関数を使用して、ディレクトリ名を取得できます。

myPath := extractFilePath(FileName);

fileNameは、OpenDialogで選択したファイルの名前です。

1
Ondra C.