Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Система";
Текущий архив: 2003.04.17;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.44 MB
Время: 0.008 c
1-54558
Provodnick
2003-04-06 05:19
2003.04.17
CTRL+ENTER в MEMO


3-54438
kie
2003-04-01 23:00
2003.04.17
Добавление данных в DB


7-54926
Пубертанец
2003-02-27 13:57
2003.04.17
Как получить список каталогов на диске?


11-54543
Vitalis
2002-07-01 23:00
2003.04.17
TKOLHTTP и TKOLFTP - скачка определенной части файла


1-54653
Брат
2003-04-08 14:33
2003.04.17
EInvalidOperation with message Control Grid has no parent wind





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский