ファイルを検索する
ファイルを検索するには 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.
|