ファイルリストの取得

関連記事

ファイルリストの取得の必要性が出てきたもんで,書き倒してみました

    ワイルドカード対応
    深い階層のフォルダ内検索と指定フォルダのみ(深階層は無視)の検索
に対応しております

ここにも書いておきます
御自由にドゾー(バグってたら,連絡ください(汗)


手続き名
Get_FileList(sPath:String; slFList:TStringList; wildStr : string = ”; dirFl : Bool = false);
引数
    sPath:String
      検索を開始するフォルダ名
    slFList:TStringList
      検索結果を格納するTStringListクラスのインスタンス
    wildStr : string = ”
      ワイルドカード “*.*”とか,”a*.txt”とか,OK!省略可能.省略時は “*.*”と同等
    dirFl : Bool = false
      深階層のフォルダを検索するかのフラグ(true:深階層を追っかける, false:追っかけない)
      省略可能.省略時はfalse
//***********************************************
//ファイルリストを取得(主処理@再帰を利用)
//
//***********************************************
procedure Get_FileListCore(sPath:String; slFList:TStringList; wildStr : string; dirFl : Bool);
var
    tmpFPath : String;
    SRec: TSearchRec;
begin

  if sPath[length(sPath)] <> '\' then
  begin
    sPath := sPath + '\';
  end;

  if wildStr = '' then
   begin
    	tmpFPath := sPath + '*.*';
   end
  else
   begin
    	tmpFPath := sPath + wildStr;
   end;

  if FindFirst(tmpFPath, faAnyFile or faDirectory, SRec) = 0 then
   begin
      repeat
        if not ((SRec.Name = '.') or (SRec.Name = '..')) then
        begin
          if (SRec.Attr and faDirectory) = 0 then
          begin
            slFList.add(sPath + SRec.Name);
          end
          else
          begin
            if dirFl = true then
            begin
                Get_FileListCore(sPath + SRec.Name + '\', slFList, wildStr, dirFl);
            end;
          end;
        end;
      until FindNext(SRec) <> 0;
      FindClose(SRec);
  end;
end;

//***********************************************
//ファイルリストを取得
//
//***********************************************
procedure Get_FileList(sPath:String; slFList:TStringList; wildStr : string = ''; dirFl : Bool = false);
begin
  slFList.Clear;
  Get_FileListCore(sPath, slFList, wildStr, dirFL);
end;

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください