Ignore:
Timestamp:
Sep 16, 2007, 9:44:46 AM (18 years ago)
Author:
RBRi
Message:

improved directory flag handling (see #31)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Library/FileUtilsUnit.pas

    r235 r238  
    9494
    9595  // searches for all directories in aDirectory and add them to aList
    96   Procedure ListSubDirectories(const aDirectory: String; var aList: TStrings);
     96  Procedure ListSubDirectories(const aDirectory: String; const anIncludeSystemAndHiddenFlag: boolean; var aList: TStrings);
    9797
    9898  Procedure ListFilesInDirectoryRecursiveWithTermination(const aDirectory : String;
    9999                                                         const aFilter : String;
    100100                                                         const aWithDirectoryFlag : boolean;
     101                                                         const anIncludeSystemAndHiddenFlag: boolean;
    101102                                                         var aList : TStrings;
    102103                                                         const aTerminateCheck : TTerminateCheck;
     
    112113
    113114
    114 
     115  // Checks if a directory exists
    115116  Function DirectoryExists(const aDirectory : String) : boolean;
    116117
     
    502503
    503504
    504   Procedure ListSubDirectories(const aDirectory: String; var aList: TStrings);
     505  Procedure ListSubDirectories(const aDirectory: String; const anIncludeSystemAndHiddenFlag: boolean; var aList: TStrings);
    505506  var
    506507    tmpRC : APIRET;
    507508    tmpSearchResults: TSearchRec;
    508509    tmpName : String;
    509   begin
    510 
    511     tmpRC := FindFirst(AddDirectorySeparator(aDirectory) + '*', faDirectory or faMustDirectory, tmpSearchResults);
     510    tmpFileAttributes : ULONG;
     511  begin
     512
     513    if anIncludeSystemAndHiddenFlag then
     514    begin
     515      tmpFileAttributes := faArchive or faReadonly or faHidden or faSysFile or faDirectory or faMustDirectory;
     516    end
     517    else
     518    begin
     519      tmpFileAttributes := faArchive or faReadonly or faDirectory or faMustDirectory;
     520    end;
     521
     522    tmpRC := FindFirst(AddDirectorySeparator(aDirectory) + '*', tmpFileAttributes, tmpSearchResults);
    512523    if (tmpRC <> 0) then
    513524    begin
     
    531542                                                         const aFilter : String;
    532543                                                         const aWithDirectoryFlag : boolean;
     544                                                         const anIncludeSystemAndHiddenFlag: boolean;
    533545                                                         var aList : TStrings;
    534546                                                         const aTerminateCheck : TTerminateCheck;
     
    544556    // now determine all subdirectories
    545557    tmpSubDirectories := TStringList.Create;
    546     ListSubDirectories(aDirectory, tmpSubDirectories);
     558    ListSubDirectories(aDirectory, anIncludeSystemAndHiddenFlag, tmpSubDirectories);
    547559
    548560    for i := 0 to tmpSubDirectories.Count - 1 do
     
    555567      tmpSubDirectory := tmpSubDirectories[i];
    556568
    557       ListFilesInDirectoryRecursiveWithTermination(tmpSubDirectory, aFilter, aWithDirectoryFlag, aList, aTerminateCheck, aUseTerminateCheck);
     569      ListFilesInDirectoryRecursiveWithTermination(     tmpSubDirectory,
     570                                                        aFilter,
     571                                                        aWithDirectoryFlag,
     572                                                        anIncludeSystemAndHiddenFlag,
     573                                                        aList,
     574                                                        aTerminateCheck,
     575                                                        aUseTerminateCheck);
    558576    end;
    559577    tmpSubDirectories.Destroy;
     
    653671    end;
    654672
    655     tmpRC := FindFirst(tmpDirectory, faDirectory or faMustDirectory, tmpSearchResults);
     673    tmpRC := FindFirst( tmpDirectory,
     674                        faArchive or faReadonly or faHidden or faSysFile or faDirectory or faMustDirectory,
     675                        tmpSearchResults);
    656676    if tmpRC = 0 then
    657677    begin
Note: See TracChangeset for help on using the changeset viewer.