象windows搜索那个样子,从c到f搜索一个符合条件的,比如文件名相同的文件,包括文件夹里的子文件!谢谢!!

解决方案 »

  1.   

    配合filelistbox和directorylistbox一起用
      

  2.   

    先从c:搜起,用findfirst()和findnext()函数递归进行。搜索完了用chdir()函数转换到别的目录,如chdir('e:\'),转换到e:,再用同样的方法查找.
      

  3.   

    Drate(鸟窝里的虫) 的代码有哪位看懂了,给小弟讲讲看啊??为什么proc:TFindCallBack=nil什么意思啊??TFindCallBack是个过程名字啊,怎么能当类型啊
    if (info.Name<>'.') and (info.Name<>'..') and ((info.attr and fadirectory)=fadirectory) 语句中的 fadirectory是什么东东啊?
    findfile(qqq,edit1.text,edit2.text,aaa,checkbox1.checked,checkbox2.checked);
    调用中为什么还能调用aaa这个过程当参数啊??delphi允许这种情况啊?
      

  4.   

    将下面的代码仔细看一下应该说就可以搞定你的问题了。
    function TMainForm.GetDirectoryName(Dir: String): String;
    begin
      if Dir[Length(Dir)]<> '\' then
        Result := Dir+'\'
      else
        Result := Dir;
    end;procedure TMainForm.FindFiles(APath: String);
    var
      FSearchRec,
      DSearchRec: TSearchRec;
      FindResult: integer;
      function IsDirNotation(ADirName: String): Boolean;
      begin
        Result := (ADirName = '.') or (ADirName = '..');
      end;begin
      APath := GetDirectoryName(APath);
      FindResult := FindFirst(APath+FFileName,faAnyFile+faHidden+
                              faSysFile+faReadOnly,FSearchRec);
      try
        while FindResult = 0 do
        begin
          ExtractFileExt(StrPas(FSearchRec.FindData.cFileName));
          lbFiles.Items.Add(LowerCase(APath+FSearchRec.Name));
          FindResult := FindNext(FSearchRec);
        end;    FindResult := FindFirst(APath+'*.*', faDirectory, DSearchRec);
        while FindResult = 0 do
        begin
          if ((DSearchRec.Attr and faDirectory) = faDirectory)
             and not IsDirNotation(DSearchRec.Name) then
          begin
            FindFiles(APath+DSearchRec.Name); // Recursion here
          end;
          FindResult := FindNext(DSearchRec);
        end;
      finally
        FindClose(FSearchRec);
      end;
    end;
      

  5.   

    FindFirst,FindNext,FindClose加递归就搞定了FindFirst,FindNext,FindClose请参见delphi help
    递归:找一本算法的书就行了