ファイルを「*abc*.txt」で検索したい

解決


  2008-05-13 22:47:37  No: 30690

指定したフォルダ内のファイルを「*abc*.txt」で検索したいです。

ファイル検索コンポーネント FindFile は検索結果が0となってしまうようです。
http://homepage3.nifty.com/m-and-i/tips/tipspage.htm

検索コンポーネント TSearchFile & TSearchDirは、
残念ながらダウンロードサイトが見つかりませんでした。

方法もしくはコンポーネント、ご教示お願いいたします。


igy  2008-05-13 23:17:37  No: 30691

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;


  2008-05-14 18:54:10  No: 30692

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;


  2008-05-14 18:56:40  No: 30693

訂正です

//=============================================================================
// 指定フォルダ下でファイルを検索し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;


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加