On 3/23/09, leledumbo <leledumbo_c...@yahoo.co.id> wrote: > This can be achieved by a function that iterates over a directory (and > possibly its subdirectories) and do specified operation on every files that > matches given mask. However, I don't seem to find one. The closest one is > FindAllFiles from Lazarus' FileUtil unit + iteration of DeleteFile over the > result and that's the one I'm currently using. Would someone add it? > See my EnumDirs unit. It does simply that. You can set include and exclude masks. Masks can be case-sensitive or not, unixtype or windowstype, just set the appropriate option (I use this unit as a base for my backup program (see sources at http://home.tiscali.nl/~knmg0017/software/sbp_bron.zip for example).
The unit is documented in the sourcecode. http://home.tiscali.nl/~knmg0017/software/fpc_laz/enumdirs.zip You also need extmasks.zip (and possibly fpc_patches.tgz if you don't use fpc 2.3.x), they ar all on the same page (http://home.tiscali.nl/~knmg0017/laz_fpc_libs.htm) TDirEnumerator = class(TCustomDirEnumerator) published property Path; property MaskList; property ExclMaskList; property ListSeparator; property Attribute; property Options; property FileHandler; end; In essence: var Enumerator: TDirEnumerator; ... Try Enumerator := TDirEnumerator.Create; Enumerator.Path := '/'; Enumerator.MaskList := '*'; Enumerator.Options := [soRecursive, soIgnoreErrors]; Enumerator.Attribute := faAnyFile or faSymLink; Enumerator.FileHandler := @DeleteTheFile; Enumerator.EnumDir; Finally Enumerator.Free; end; ... This would nicely delete all files (in the DeleteTheFile method) on your system. Run it as root ;-) to have fun (Possibly the cals to FindFirst/FindNext should be replaced by FindFirstUTF8/FindNextUTF8? I did not test this, as I never needed it, and I wrote the unit befoer the switch in LCL to UTF8) Bart _______________________________________________ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-pascal