bibi262
Messages postés9Date d'inscriptionvendredi 14 janvier 2005StatutMembreDernière intervention 4 décembre 2006
-
8 oct. 2006 à 17:06
elguevel
Messages postés718Date d'inscriptionjeudi 19 décembre 2002StatutMembreDernière intervention22 novembre 2016
-
13 oct. 2006 à 11:17
Bonjour,
Je cherchais depuis un bout comment faire pour supprimer les fichiers qui sont dans les sous-dossiers, j'ai finit par trouver un code qui marche superbement bien :
procedure Scan( NomDossier : string );
var
hFound : Integer;
sFileData : TSearchRec;
begin
NomDossier := IncludeTrailingPathDelimiter( NomDossier );
hFound := FindFirst( NomDossier + '*.*', faAnyFile, sFileData);
if ( hFound = 0 ) then
begin
repeat
if ( ( sFileData.Name <> '.' ) and ( sFileData.Name <> '..' ) ) then
begin
if ( ( sFileData.Attr and faDirectory ) <> faDirectory ) then
begin
ShowMessage('File name = '+sFileData.Name);
ShowMessage('File size = '+IntToStr(sFileData.Size));
end
else
Scan( NomDossier + sFileData.Name);
end;
until ( FindNext( sFileData ) <> 0 );
end;
SysUtils.FindClose( sFileData );
end;
J'en avais besoin car je devais supprimer tout les fichiers *.bak présent dans le disque dur. Alors je modifie :
hFound := FindFirst( NomDossier + '*.*', faAnyFile, sFileData);
pour
hFound := FindFirst( NomDossier + '*.bak', faAnyFile, sFileData);
Mais ça ne marche pas, si je remplace par *.bak, la fonction sous-dossier ne fonctionnera plus. Je ne comprends pas pourquoi et j'esasie de comprendre mais sans résultat.
Emandhal
Messages postés194Date d'inscriptiondimanche 2 mars 2003StatutMembreDernière intervention10 octobre 20063 8 oct. 2006 à 20:46
u,
C'est parce que tu n'a pas de répertoire avec une extension.bak.
Il te faut analyser tous les fichiers et dossiers avec *.*, et dans "if ( ( sFileData.Attr and faDirectory ) <> faDirectory ) then" il te faut vérifier l'extension et si c'est .bak, suppr le fichier.
Tout problème a sa solution... Mais en général, celle que l'on trouve n'est jamais la bonne...
elguevel
Messages postés718Date d'inscriptionjeudi 19 décembre 2002StatutMembreDernière intervention22 novembre 20163 13 oct. 2006 à 11:17
Hé mais c'est mon code çà ! :-) Content en tout cas que ma source serve à quelque chose !
Sinon oui le masque marche pour tout les types de fichier (donc dossier), il faut donc bien ajouter une condition sur le nom de fichier dans la boucle !