Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.04.17;
Скачать: CL | DM;

Вниз

удаление файлов и папок   Найти похожие ветки 

 
Andy Eremin ©   (2003-02-27 07:27) [0]

Уважаемые Мастера!
Как удалить папку и находящиеся в ней файлы?
Функции FindNext почему-то отбирает не все файлы:
FindFirst(GetCurrentDir+"\*.*", faAnyFile, sr);
Но даже после удаления в цикле всех файлов (хотя это глупость, конечно, т.к. в дальнейшем я не буду знать точное кол-во файлов в папке) папка не удаляется (хотя с заранее пустой папкой эта функция работает):
RemoveDir(GetCurrentDir);


 
Verg ©   (2003-02-27 08:15) [1]


> Функции FindNext почему-то отбирает не все файлы:
> FindFirst(GetCurrentDir+"\*.*", faAnyFile, sr);


Вы верите в чудеса? :)

Если нет, то надо бы привести полный код своей процедуры и спросить: "где тут ошибка?"

А вот в наборе Rx в модуле fileutil есть функция:

function ClearDir(const Path: string; Delete: Boolean): Boolean;
const
{$IFDEF WIN32}
FileNotFound = 18;
{$ELSE}
FileNotFound = -18;
{$ENDIF}
var
FileInfo: TSearchRec;
DosCode: Integer;
begin
Result := DirExists(Path);
if not Result then Exit;
DosCode := FindFirst(NormalDir(Path) + "*.*", faAnyFile, FileInfo);
try
while DosCode = 0 do begin
if (FileInfo.Name[1] <> ".") and (FileInfo.Attr <> faVolumeID) then
begin
if (FileInfo.Attr and faDirectory = faDirectory) then
Result := ClearDir(NormalDir(Path) + FileInfo.Name, Delete) and Result
else if (FileInfo.Attr and faVolumeID <> faVolumeID) then begin
if (FileInfo.Attr and faReadOnly = faReadOnly) then
FileSetAttr(NormalDir(Path) + FileInfo.Name, faArchive);
Result := DeleteFile(NormalDir(Path) + FileInfo.Name) and Result;
end;
end;
DosCode := FindNext(FileInfo);
end;
finally
FindClose(FileInfo);
end;
if Delete and Result and (DosCode = FileNotFound) and
not ((Length(Path) = 2) and (Path[2] = ":")) then
begin
RmDir(Path);
Result := (IOResult = 0) and Result;
end;
end;


...так она нормально работает.


 
AGGRESSOR   (2003-02-27 15:19) [2]

ИМХО, лучше SHFileOperation - объем кода уменьшится раз в 10...



Страницы: 1 вся ветка

Текущий архив: 2003.04.17;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.015 c
3-54511
caesar
2003-03-31 16:37
2003.04.17
Delphi и Fox


7-54903
ed
2003-02-23 12:46
2003.04.17
Смена используемого по умолчанию принтера


14-54822
MBo
2003-04-01 06:50
2003.04.17
ACM-ICPC


1-54591
Angel[Saint]
2003-04-07 09:10
2003.04.17
FindComponent


4-54953
children
2003-02-18 20:56
2003.04.17
командная строка