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;