ファイルを検索する
ファイルを検索するには FindFirstFile 、FindNextFile API またはそれらを関数化した FindFirst
、 FindNext 関数を使います。
以下の例は Cドライブのファイル・フォルダの一覧を TreeView に表示します。
■ FindFirst FindNext の例 |
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ComCtrls, StdCtrls; type TForm1 = class(TForm) TreeView1: TTreeView; Button1: TButton; procedure Button1Click(Sender: TObject); private { Private 宣言 } procedure Build(Node: TTreeNode; const Path: string); public { Public 宣言 } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin Build(nil , 'C:'); end; procedure TForm1.Build(Node: TTreeNode; const Path: string); var Rec : TSearchRec; {ファイル情報} TreeNode: TTreeNode; {TreeView追加ノード} begin //最初のファイル検索 (成功した場合は 0 を返す) if (FindFirst(Path + '\*.*', faAnyFile, Rec) = 0) then begin repeat // . と .. は処理しません if ((Rec.Name <> '.') and (Rec.Name <> '..')) then begin //ツリーにノードを追加 TreeNode := TreeView1.Items.AddChild(Node, Rec.Name); //ディレクトリかどうかをチェック if ((Rec.Attr and faDirectory) > 0) then begin //ディレクトリなら再帰的に処理 Build(TreeNode, Path + '\' + Rec.Name); end; end; //次のファイル (成功した場合は 0 を返す) until (FindNext(Rec) <> 0); end; end; end. |