利用TSearchRect类,getfirst,next...可以实现,具体参考一下帮助文件中的TSearchRect类吧!

解决方案 »

  1.   


    http://www.csdn.net/dev/Delphi/
    找 tree.zip
      

  2.   

    下面的两个函数,FilesInDir用于寻找指定目录下的文件,DirsInDir用于寻找指定目录下的目录。function FilesInDir(Dir: string; Mask: string; var FileNames: TStringList): boolean;
    //Find File in Dir
    var
      FindHandle: THandle;
      FindData: Win32_Find_Data;
      procedure Add;
      begin
        if FileExists(Dir + FindData.cFileName)
          and (FindData.dwFileAttributes and FILE_ATTRIBUTE_DIRECTORY = 0)
            and (FindData.dwFileAttributes and FILE_ATTRIBUTE_OFFLINE = 0)
              and (FindData.dwFileAttributes and FILE_ATTRIBUTE_TEMPORARY = 0)
                then
        FileNames.Add(FindData.cFileName);
      end;
    begin
      Result := false;
      Dir := IncludeTrailingBackslash(Dir);
      FileNames.Clear;
      FindHandle := FindFirstFile(PChar(Dir + Mask), FindData);
      if FindHandle <> 0 then begin
        Add;
        While FindNextFile(FindHandle, FindData) do Add;
        Windows.FindClose(FindHandle);
        if FileNames.Count > 0 then Result := true;
      end;
    end;function DirsInDir(Dir: string; Mask: string; var DirNames: TStringList): boolean;
    //Find Directory in Dir
    //Update on 
    var
      FindHandle: THandle;
      FindData: Win32_Find_Data;
      procedure Add;
      begin
        if FileExists(Dir + FindData.cFileName)
          and (FindData.dwFileAttributes and FILE_ATTRIBUTE_DIRECTORY = 0)
            and (FindData.dwFileAttributes and FILE_ATTRIBUTE_OFFLINE = 0)
              and (FindData.dwFileAttributes and FILE_ATTRIBUTE_TEMPORARY = 0)
                then
        DirNames.Add(FindData.cFileName);
      end;
    begin
      Result := false;
      DirNames.Clear;
      FindHandle := FindFirstFile(PChar(Dir + Mask), FindData);
      if FindHandle <> 0 then begin
        Add;
        While FindNextFile(FindHandle, FindData) do Add;
        Windows.FindClose(FindHandle);
        if DirNames.Count > 0 then Result := true;
      end;
    end;
      

  3.   

    用的着那么麻烦吗?
    我觉得用两个函数FindFirst和FindNext足以搞定。
    for example:
    procedure GetSubDir;
    var
      DirInfo: TSearchRec;
    begin
      if findfirst('XXX\*.*',faDirectory,DirInfo)=0 then
        将DirInfo.Name保存到数组;
      while findnext('XXX\*.*',faDirectory,DirInfo) = 0 do
      begin
        将DirInfo.Name保存到数组
      end;end;
      

  4.   

    path:='.\myfile\';
      found:=FindFirst(path+'*.*',faAnyFile,SearchRec);
      while found=0 do
      begin
        if (SearchRec.Name<>'.')and(SearchRec.Name<>'..')and(SearchRec.Attr<>faDirectory)
        then
          with Treeview1.Items.addchild(nil,searchRec.name) do
          begin
            ImageIndex:=0;
          end;
        found:=FindNext(SearchRec);
      end;
      FindClose(SearchRec);