On Tue, 6 Oct 2020, Ryan Joseph via fpc-pascal wrote:

Since we're on the topic how about another one-liner for reading all the files 
in directory into a dynamic array? This has the added benefit of getting 
enumeration for free. This is standard stuff for working with files in 
scripting languages so I think the FPC RTL should include something like this 
also.

================================

type
 TStringArray = array of string;

function FindAllFiles(path: string): TStringArray;
var
 info: TSearchRec;
begin
 if not DirectoryExists(path) then
   raise Exception.Create('Directory "'+path+'"" doesn''t exist');
 path := path+DirectorySeparator+'*';
 result := [];
 if FindFirst(path, faAnyFile, info) = 0 then
   begin
     repeat
       result += [info.name];
     until FindNext(info) <> 0;
     FindClose(info);
   end;
end;

begin
 // fastest way to read all text files in a directory.
 // only 2 lines doesn't leak memory
 for name in FindAllFiles('/usr/local/lib/fpc') do
   writeln(GetFileAsString('/usr/local/lib/fpc/'+name));
end.

I see Delphi has something similar, so I will add an implementation. But I need to study the options they provide so we can make a reasonably
compatible version :)

Michael.
_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal

Reply via email to