1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
|
program Essai2;
{&PMTYPE VIO}
{ Essai préparatoire pour une fonction DelTree.
Supprime tous les fichiers d'un dossier donné, y compris le contenu des sous-dossiers. }
uses
Strings, Windows;
const
Masque = '\*.*';
DossierTest = 'C:\Documents and Settings\Roland\Mes documents\RAD Studio\DelTree\GP2';
{ N.B. Tout le contenu du dossier sera supprimé ! }
var
BufferChemin: array[0..MAX_PATH]of Char;
Fichier: file;
procedure RECHERCHE_RECURSIVE(Dossier: pChar);
var
hRecherche: tHandle;
FindData: tWin32FindData;
NomDossier, Chemin: pChar;
ContinuerRecherche: LongBool;
begin
//////////////////////////////////////////////////////////////////////////////
NomDossier := StrNew(Dossier);
StrCopy(BufferChemin, Dossier);
StrCat(BufferChemin, Masque);
Chemin := StrNew(BufferChemin);
//////////////////////////////////////////////////////////////////////////////
hRecherche := FindFirstFile(Chemin, FindData);
//////////////////////////////////////////////////////////////////////////////
if hRecherche <> Invalid_Handle_Value then
begin
ContinuerRecherche := True;
while ContinuerRecherche do
begin
if (FindData.dwFileAttributes and File_Attribute_Directory) <> 0 then
begin
if FindData.cFileName[0] <> '.' then
begin
StrCopy(BufferChemin, NomDossier);
if BufferChemin[StrLen(BufferChemin) - 1] <> '\' then
StrCat(BufferChemin, '\');
StrCat(BufferChemin, FindData.cFileName);
RECHERCHE_RECURSIVE(BufferChemin);
end;
end else
begin
StrCopy(BufferChemin, NomDossier);
if BufferChemin[StrLen(BufferChemin) - 1] <> '\' then
StrCat(BufferChemin, '\');
StrCat(BufferChemin, FindData.cFileName);
////////////////////////////////////////////////////////////////////////
Assign(Fichier, BufferChemin);
Erase(Fichier);
////////////////////////////////////////////////////////////////////////
end;
ContinuerRecherche := FindNextFile(hRecherche, FindData);
end;
FindClose(hRecherche);
end;
//////////////////////////////////////////////////////////////////////////////
if NomDossier <> nil then StrDispose(NomDossier);
if Chemin <> nil then StrDispose(Chemin);
//////////////////////////////////////////////////////////////////////////////
end;
BEGIN
//////////////////////////////////////////////////////////////////////////////
StrCopy(BufferChemin, DossierTest);
//////////////////////////////////////////////////////////////////////////////
RECHERCHE_RECURSIVE(BufferChemin);
//////////////////////////////////////////////////////////////////////////////
Write('Appuyez sur la touche Entr'#130'e...'); ReadLn;
//////////////////////////////////////////////////////////////////////////////
END. |
Partager