如何利用路径搜索相应的文件

解决方案 »

  1.   

    主要用FindFirst和FindNextprocedure TForm1.Button1Click(Sender: TObject);
    var
      FileRec:TSearchRec;
      s:string;
      Files:TStrings;
      i:Integer;
    begin
      Files:=TStringList.Create;
      s:='e:\mp3\中文\*.mp3';
      i:=0;
      try
        if FindFirst(s,faAnyFile,FileRec)=0 then
          repeat
            inc(i);
            Files.Add(inttostr(i)+'*'+FileRec.Name);
          until FindNext(FileRec)<>0;
        Memo1.Lines.Add(inttostr(Files.count));
      finally
        Memo1.Lines.AddStrings(Files);
        FindClose(FileRec);
        Files.Free;
      end;end;
      

  2.   


    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
          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
            FindFiles(APath+DSearchRec.Name); 
          FindResult := FindNext(DSearchRec);
        end;
      finally
        FindClose(FSearchRec);
      end;
    end;