要在一个固定的文件夹里,对所有.txt的文件名进行操作,希望可以有专门的函数可以直接把所有的文件名放在一个数组里,没有这样的函数的话,自己怎么写呢,麻烦各位给各提示!

解决方案 »

  1.   

    procedure _GetTxtFileName;
      var
        FindData: TWin32FindData;
        Handle1 : THandle;
        FileNameList:TstringList;
      begin
        FileNameList:=TStringList.create;
        Handle1 := FindFirstFile(PChar('*.txt'), FindData);
        if (Handle1 <> INVALID_HANDLE_VALUE) then
          begin
            repeat
              if (FindData.dwFileAttributes and (FILE_ATTRIBUTE_DIRECTORY) = 0) then
                begin
                  FileNameList.add(FindData.cFileName);    //文件名
                end;
            until FindNextFile(Handle1, FindData) <> True;
            Windows.FindClose(Handle1);
          end;
          filenamelist.savetofile('c:\look.txt');
          FileNameList.free;
      end;
      

  2.   

    FindFiles(Apath: String);
    var
       FSearchRec:TSearchRec;
       DSearchRec:TSearchRec;
       FindResult:integer;
       lbfiles:TListBox;
       i:integer;
       YourArray:Array of String;
       function isDirNotation(ADirName:String):Boolean;
       begin
          Result:=(ADirName='.') or (ADirName='..');
       end;
       function  GetDirectoryName(Dir: String): String;
        begin
            if Dir[Length(Dir)]<>'' then
               Result:=Dir+'\'
            else
               Result:=Dir;
        end;begin
       lbfiles:=TlistBox.Create(Nil);
       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;       Setlength(YourArray,lbFiles.Count);
           for i:=0 to lbFiles.Items.Count-1 do
             YourArray[i]:=lbFiles.Items[i];       finally
              FindClose(FSearchRec);
              lbFiles.Free;
           end;
    end;
      

  3.   

    哦,对不起,最前面要加procedure