Contributor: DUNCAN MCNIVEN {>I still need some help writing a program similar to MS-DOS DELTREE.>Even though I RTFM, I aparrently don't understand the syntax for>FindFirst and FindNext. I was just playing with this yesterday. The following is not pretty, but it should work. Hope it helps. } procedure DelTree(const RootDir : String); var SearchRec : TSearchRec; begin Try ChDir(RootDir); {Path to the directory given as parameter } FindFirst('*.*',faAnyFile,SearchRec); Erc := 0; while Erc = 0 do begin { Ignore higher level markers } if ((SearchRec.Name '.' ) and (SearchRec.Name '..')) then begin if (SearchRec.Attr and faDirectory>0) then begin { Have found a directory, not a file. Recusively call ouselves to delete its files } DelTree(SearchRec.Name); end else begin {Found a file. Delete it or whatever you want to do here } end; end; Erc := FindNext (SearchRec); { Erc is zero if FindNext successful, otherwise Erc = negative DOS error } {Give someone else a chance to run} Application.ProcessMessages; end; finally { If we are not at the root of the disk, back up a level } if Length(RootDir)> 3 then ChDir('..'); { I guess you would remove directory RootDir here } end; end;