我在数据库里存了一些文件的文件名,要系统能自动去搜索这些文件在计算机里的路径!搜索到以后自动写到数据库里和该文件对应的路径里,请问有没有什么方法!对单个文件的搜索我看了不少贴子,自己这边功能也实现了,但要搜索多个文件不知道该如何进行!还有像字符串c:\123\456\aa.exe   有没有函数能把aa.exe这段取出来的,ExtractFilePath只能取前面的路径,不知道取后面的文件名要用什么?
如:
文件名   路径
aa.exe   c:\...\aa.exe

解决方案 »

  1.   

    难道是读1条记录搜一次硬盘?那数据库里有100条记录,搜索D盘好了,那不是要搜100次?在windows里面搜索可以同时搜索好几条记录的啊,只要在记录间加个空格就好了
      

  2.   

    procedure TfrmSongLib.searchpath(path,FileName: string);
    var
        searchrec:TSearchRec;
        ext,FFileName:string;     //后缀
    begin
      Application.ProcessMessages;
        //在路径后面加上'\'
      if path[length(path)]<>'\' then
          path := path + '\';  if FindFirst(path+'*.*', faAnyFile, SearchRec)<>0 then
      begin
        //如果没有找到任何文件和文件夹,退出并且提示
        exit;
      end;
      //判断是否为目录,是目录则循环
      if (searchrec.Attr and faDirectory) <> 0 then
      begin
          if (searchrec.name<>'.') and (searchrec.name<>'..') then
              searchpath(path+searchrec.name,FileName);
      end
      else begin
        FFileName :=AnsiUpperCase(Searchrec.Name);
        if Pos(FileName,FFileName)>0 then
        begin
          if IsInBound(ExtractFileExt(FFileName)) then //是否在扩展名的范围内。
          begin
            AddFileInfo(Searchrec,path);
          end;
        end;
      end;
      while findnext(searchrec)=0 do
      begin
        if (searchrec.Attr and faDirectory) <> 0 then
        begin
          if (searchrec.name<>'.') and (searchrec.name<>'..') then
            searchpath(path+searchrec.name,FileName);
        end
        else begin
          FFileName :=AnsiUpperCase(Searchrec.Name);
          if Pos(AnsiUpperCase(FileName),FFileName)>0 then
          begin
            if IsInBound(ExtractFileExt(FFileName)) then //扩展名是否有效。自己定义的函数
            begin
              AddFileInfo(Searchrec,path);//添加进数据库的过程,自己定义的。
            end;
          end;
        end;
      end;
      findclose(searchrec);
    end;
      

  3.   

    我想问一下,查到文件返回一个值,查不到返回另一个值这应该写在哪?假设返回值  FileSearchResult:String   查到了,FileSearchResult:='查到了';查不到, FileSearchResult:='查不到';
      

  4.   

    一次提供多个文件后缀名,每招到一个文件,则和多个文件后缀名判断比较即可。使用MatchesMask可以进行模糊匹配