Vider un répertoire et supression de sous répertoire

Adidas2 Messages postés 26 Date d'inscription samedi 22 février 2003 Statut Membre Dernière intervention 13 novembre 2004 - 26 oct. 2003 à 23:36
Adidas2 Messages postés 26 Date d'inscription samedi 22 février 2003 Statut Membre Dernière intervention 13 novembre 2004 - 27 oct. 2003 à 09:50
Bonjour,
J'aimerai savoir comment faire pour avoir une fonction qui vide un répertoire mais qui supprime également les sous répertoires. J'ai essayé avec ShFileOpStruct mais ce n'est pas bon car cette fonction doit continuer même si le fichier est utilisé par Windows. Donc voyez ce que j'ai fait :

procedure ViderDossier(dossier: string);
var
TMPDossier : TSearchRec;
TMPFichier : integer;
Erreur :string;
begin
dossier := IncludeTrailingPathDelimiter(dossier);
TMPFichier := FindFirst(dossier +'*.*',FaAnyfile,TMPDossier);
while TMPFichier = 0 do begin
if ((TMPDossier.Attr and FaDirectory <> FaDirectory) and (TMPDossier.Attr and FaVolumeId <> FaVolumeID)) then
if DeleteFile(pChar(dossier+TMPDossier.Name)) = false then Erreur := '';
TMPFichier := FindNext(TMPDossier);
end;
SysUtils.FindClose(TMPDossier);
end;

Cette fonction supprime bien les fichiers non utilisés par Windows mais ne va pas dans les sous répertoires.
Quelqu'un aurait il la solution SVP ?
Je vous remerci d'avance pour vos réponses.

2 réponses

Adidas2 Messages postés 26 Date d'inscription samedi 22 février 2003 Statut Membre Dernière intervention 13 novembre 2004
27 oct. 2003 à 00:22
Merci je vais essayer je vous tiens au courant demain car la je fatigue.
Merci beaucoup ;)
0
Adidas2 Messages postés 26 Date d'inscription samedi 22 février 2003 Statut Membre Dernière intervention 13 novembre 2004
27 oct. 2003 à 09:50
Je viens d'essayer cette fonction et apparemment elle ne veut pas marcher.
J'ai mis un showmessage pour voir la valeur qu'avait la variable qu'on passe à destruct_root je me retrouve pas tout à fait avec l'adresse de mes sous-dossier c'est normal ?
et je comprend pas trop l'intérêt du chem := copy(adr, 1, length(adr)-1); vous pourriez m'expliquer pourquoi on supprime le caractère de fin svp ?
Merci d'avance
0
Rejoignez-nous