如何获得指定目录下的所以文件的文件名?

解决方案 »

  1.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
      sr : TSearchRec;
      PathDir : String;
    begin
    memo1.Lines.Clear;
    //pathdir:='e:\gzhx\*.*';
    PathDir := 'd:\rsc\*.pas';
      If FindFirst(PathDir, faanyfile, sr)=0 Then
      Begin
      //showmessage('123');
       memo1.Lines.Add(sr.Name+' '+inttostr(sr.Size));
        While FindNext(sr)=0 Do
        Begin
         memo1.Lines.Add(sr.Name+' SIZE:'+inttostr(sr.Size)+'KB');
        End;
      End;
    end;
      

  2.   

    Findefirst
    FindNext
    CloseFile
      

  3.   

    procedure SearchFile(Path: string; Mask: string; SubFolder: boolean; FoundResult: TStrings; var Num: integer);
    var
    i, Count: integer;
    SubDir: TStrings;
    SearchRec: TSearchRec;
      {Begin Local Function}
      function IsValidDir(SearchRec: TSearchRec): integer;
    begin
    if (SearchRec.Attr <> 16) and  (SearchRec.Name <> '.') and (SearchRec.Name <> '..') then
    Result:=0 {It's not dir}
    else
    if (SearchRec.Attr = 16) and  (SearchRec.Name <> '.') and (SearchRec.Name <> '..') then
    Result:=1 {It's not root dir}
         else
    Result:=2; {It's root dir}
    end;
      {End Local Function}
    begin
    if Trim(Mask) <> '' then
    begin
    if (FindFirst(Path + Mask, faAnyFile, SearchRec) = 0) then
    begin
    repeat
    if IsValidDir(SearchRec) = 0 then
    begin
    Inc(Num);
    FoundResult.Add(Path + SearchRec.Name);
    end;
    Application.ProcessMessages;
    until (FindNext(SearchRec) <> 0);
    end;
    FindClose(SearchRec);
        if SubFolder then
         begin
    SubDir := TStringList.Create;
    if (FindFirst(Path + '*.*', faDirectory, SearchRec) = 0) then
    begin
    repeat
    if IsValidDir(SearchRec) = 1 then SubDir.Add(SearchRec.Name);
    Application.ProcessMessages;
    until (FindNext(SearchRec) <> 0);
    end;
    FindClose(SearchRec);
         Count := SubDir.Count - 1;
    for i := 0 to Count do
    SearchFile(Path + SubDir.Strings[i] + '\', Mask, true, FoundResult, Num);
    SubDir.Free;
         end;
    end;
    end;
      

  4.   

    procedure findfilename(direc:string);
    var  SearchRec: TSearchRec;
    list:tstringlist;
    retval:integer;
    begin
      list:=tstringlist.create;
      RetVal := FindFirst('c:\temp\*.*', faAnyFile, SearchRec);
      try
        while RetVal = 0 do
         begin
         if (searchrec.name<>'.') and (searchrec.name<>'..')  then
         list.add(searchrec.name);
          RetVal := FindNext(SearchRec);
      end;
      finally
        FindClose(SearchRec);
      end;
    end;