A mi me funciona algo como esto (además puedes hacerlo recursivo):
Código Delphi
[-]
var
TS:TStringList;
i:Integer;
begin
try
TS := TStringList.Create();
FindFiles('c:\windows\temp', '*.*', True, TS);
for i := 0 to (TS.Count - 1) do begin
DeleteFile(TS[i]);
end;
finally
FreeAndNil(TS);
end;
La función
FindFiles se puede encontrar en
la sección de trucos del club.
Código Delphi
[-]
procedure FindFiles(StartDir, FileMask: string; recursively: boolean; var FilesList: TStringList);
var
SR: TSearchRec;
DirList: TStringList;
IsFound: Boolean;
i: integer;
const
CHAR_BACKSLASH = '\';
MASK_ALL_FILES = '*.*';
CHAR_POINT = '.';
begin
if (StartDir[length(StartDir)] <> CHAR_BACKSLASH) then begin
StartDir := StartDir + CHAR_BACKSLASH;
end;
IsFound := FindFirst(StartDir + FileMask, faAnyFile - faDirectory, SR) = 0;
while IsFound do begin
FilesList.Add(StartDir + SR.Name);
IsFound := FindNext(SR) = 0;
end;
FindClose(SR);
if (recursively) then begin
DirList := TStringList.Create;
try
IsFound := FindFirst(StartDir + MASK_ALL_FILES, faAnyFile, SR) = 0;
while IsFound do
begin
if ((SR.Attr and faDirectory) <> 0) and
(SR.Name[1] <> CHAR_POINT) then
DirList.Add(StartDir + SR.Name);
IsFound := FindNext(SR) = 0;
end;
FindClose(SR);
for i := 0 to DirList.Count - 1 do
FindFiles(DirList[i], FileMask, recursively, FilesList);
finally
DirList.Free;
end;
end;
end;