52645.fb2 Рекурсия - читать онлайн бесплатно полную версию книги . Страница 5

Рекурсия - читать онлайн бесплатно полную версию книги . Страница 5

{ 14 } Label1: TLabel;

{ 15 } procedure Button1Click(Sender: TObject);

{ 16 } procedure FormCreate(Sender: TObject);

{ 17 } procedure Button2Click(Sender: TObject);

{ 18 } private

{ 19 } { Private declarations }

{ 20 } public

{ 21 } { Public declarations }

{ 22 } end;

{ 23 }

{ 24 } var

{ 25 } Form1: TForm1;

{ 26 } Path : AnsiString; // путь к папке с программой

{ 27 } Dir : AnsiString;

{ 28 } CCount : integer; // счетчик удалений

{ 29 }

{ 30 } implementation

{ 31 }

{ 32 } {$R *.dfm}

{ 33 }

{ 34 } function ScanEmtyDir(Target : AnsiString):boolean;

{ 35 } var

{ 36 } Found : integer; // результат поиска ( 0 - файл найден )

{ 37 } SR : TSearchRec; // запись с параметрами файла

{ 38 } begin

{ 39 } Found := FindFirst(Target + '\*.*',$3F,SR);

{ 40 } result := true; // предположим что папка пуста.

{ 41 } WHILE Found = 0 DO

{ 42 } BEGIN

{ 43 } if (SR.Name <> '.')

{ 44 } and (SR.Name <> '..')

{ 45 } then

{ 46 } begin

{ 47 } result := false; // значит папка не пуста.

{ 48 } // если это папка

{ 49 } if ((SR.Attr and $10) = $10 ) then

{ 50 } begin // рекурсивный вызов функции

{ 51 } if ScanEmtyDir( Target+'\'+ SR.Name)

{ 52 } then // удаление пустой папки

{ 53 } begin

{ 54 } with Form1.CheckListBox1 do

{ 55 } Checked[Items.Add(Target+'\'+ SR.Name)] := true;

{ 56 } end;

{ 57 } end;

{ 58 } end;

{ 59 } Found := FindNext(SR);

{ 60 } END;{DosError = 0}

{ 61 } FindClose(SR);

{ 62 } end;

{ 63 }