指定したフォルダ内のファイルを「*abc*.txt」で検索したいです。
ファイル検索コンポーネント FindFile は検索結果が0となってしまうようです。
http://homepage3.nifty.com/m-and-i/tips/tipspage.htm
検索コンポーネント TSearchFile & TSearchDirは、
残念ながらダウンロードサイトが見つかりませんでした。
方法もしくはコンポーネント、ご教示お願いいたします。
FindFirst 関数
FindNext 関数
をつかうのはどうでしょう?
procedure TForm1.Button1Click(Sender: TObject);
var
S: String;
SearchRec: TSearchRec;
ret: integer;
begin
ListBox1.Items.Clear;
S := ExtractFilePath(Application.Exename) + '*abc*.txt';
ret := FindFirst(S, faAnyFile, SearchRec);
if ret = 0 then
begin
repeat
if not ((SearchRec.Name = '.') or (SearchRec.Name = '..')) then
ListBox1.Items.Add(SearchRec.Name);
until FindNext(SearchRec) <> 0;
end;
SysUtils.FindClose(SearchRec);
end;
igyさん、ありがとうございました。
お陰様で求めている事ができました。
//=============================================================================
// 指定フォルダ下でファイルを検索しListBoxに列挙
// 検索文字にはワイルドカード使用可能( * , ? )
//=============================================================================
function TForm1.FileSearch( SearchDir , SearchName : string):bool;
var
S: String;
SearchRec: TSearchRec;
ret: integer;
begin
ListBox1.Items.Clear;
S := IncludeTrailingPathDelimiter(SearchDir) + SearchName ;
ret := FindFirst(S, faAnyFile, SearchRec);
Result := false;
if ret = 0 then
begin
repeat
if not ((SearchRec.Name = '.') or (SearchRec.Name = '..')) then
begin
ListBox1.Items.Add(SearchRec.Name);
Result := true;
end;
until FindNext(SearchRec) <> 0;
end;
SysUtils.FindClose(SearchRec);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
FileSearch('C:\hogehoge' , '*abc*.txt');
end;
訂正です
//=============================================================================
// 指定フォルダ下でファイルを検索しListBoxに列挙する関数。見つかった個数を返す
// 検索文字にはワイルドカード使用可能( * , ? )
//=============================================================================
function TForm1.FileSearch( SearchDir , SearchName : string):integer;
var
S: String;
SearchRec: TSearchRec;
ret: integer;
begin
ListBox1.Items.Clear;
S := IncludeTrailingPathDelimiter(SearchDir) + SearchName ;
ret := FindFirst(S, faAnyFile, SearchRec);
Result := 0;
if ret = 0 then
begin
repeat
if not ((SearchRec.Name = '.') or (SearchRec.Name = '..')) then
begin
ListBox1.Items.Add(SearchRec.Name);
Result := Result + 1 ;
end;
until FindNext(SearchRec) <> 0;
end;
SysUtils.FindClose(SearchRec);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage( IntToStr(FileSearch('C:\hogehoge' , '*abc*.txt'));
end;
ツイート | ![]() |