WEB开发网
开发学院软件开发Delphi 两个delphi下遍历指定目录下指定类型文件的函数 阅读

两个delphi下遍历指定目录下指定类型文件的函数

 2006-02-04 13:55:27 来源:WEB开发网   
核心提示:// // 遍历某个文件夹下某种文件,// 使用说明//  _GetFileList(ListBox1.Items,'c:\*.doc');// _GetFileList(MyTStringList,'c:\*.exe');// PRocedure TForm1._GetFileL

// ================================================================
// 遍历某个文件夹下某种文件,
// 使用说明
//     _GetFileList(ListBox1.Items,'c:\*.doc');
//      _GetFileList(MyTStringList,'c:\*.exe');
// ================================================================
PRocedure TForm1._GetFileList(AStrings: TStrings ; ASourFile: string);
var sour_path,sour_file: string;
   TmpList:TStringList;
   FileRec:TSearchrec;
begin

  sour_path:=ExtractFilePath(ASourFile);
  sour_file:=ExtractFileName(ASourFile);

  if not DirectoryExists(sour_path) then
  begin
   AStrings.Clear;
   exit;
  end;

  TmpList:=TStringList.Create;
  TmpList.Clear;

  if FindFirst(sour_path+sour_file,faAnyfile,FileRec) = 0 then
  repeat
    if ((FileRec.Attr and faDirectory) = 0) then
     begin
      TmpList.Add(sour_path+FileRec.Name)
     end;
  until FindNext(FileRec)<>0;

  SysUtils.FindClose(FileRec);

  AStrings.Assign(TmpList);

  TmpList.Free;
end;

// ================================================================
// 遍历某个文件夹及子文件夹下某种文件,
// 使用说明
//     _GetFileList(ListBox1.Items, 'c:\', '*.doc');
//      _GetFileList(MyTStringList, 'c:\', '*.exe');
// ================================================================
procedure _GetFileList(AStrings: TStrings; ASourFile,
  FileName: string);
var sour_path,sour_file: string;
   TmpList:TStringList;
   FileRec, subFileRec:TSearchrec;
   i: Integer;
begin
  if rightStr(trim(ASourFile), 1) <> '\' then
   sour_path :=trim(ASourFile) + '\'
  else
   sour_path :=trim(ASourFile);
  sour_file:= FileName;

  if not DirectoryExists(sour_path) then
  begin
   AStrings.Clear;
   exit;
  end;

  TmpList:=TStringList.Create;
  TmpList.Clear;

  if FindFirst(sour_path+'*.*',faAnyfile,FileRec) = 0 then
  repeat
    if ((FileRec.Attr and faDirectory) <> 0) then
     begin
      if ((FileRec.Name<> '.') and (FileRec.Name  <> '..')) then
       _GetFileList(AStrings, sour_path+ FileRec.Name + '\',  sour_file);
     end
    else
     if FindFirst(sour_path + FileName,faAnyfile,subFileRec) = 0 then
     repeat
      if ((subFileRec.Attr and faDirectory) = 0) then
       TmpList.Add(sour_path+subFileRec.Name);
     until FindNext(subFileRec)<>0;

  until FindNext(FileRec)<>0;

  SysUtils.FindClose(FileRec);
  for i := 0 to TmpList.Count -1 do
   AStrings.Add(TmpList.Strings[i]);

  TmpList.Free;
end;

Tags:两个 delphi 遍历

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接