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

Вниз

Как удалить не пустой католог   Найти похожие ветки 

 
bAgmAn   (2002-12-12 18:14) [0]

Долго думал как бы удалить католог в котором есть папки и файлы. Количество просто огромно а время критично.


 
Song   (2002-12-12 18:32) [1]

ShFileOperation() или TSearchRec


 
TCrash   (2002-12-12 19:09) [2]

Привожу текст функции. Где взял - не помню но не моя. просьба за копирайт не приставать.


function FullRemoveDir(Dir:string; RemoveRoot:boolean):Boolean;
var i:Integer;
SRec:TSearchRec;
FN:String;
begin
Result:= False;
if Dir = "" then exit;
if not DirectoryExists(Dir) then exit;
Result:= True;
// Добавляем слэш в конце и задаем маску - "все файлы"
Dir:= IncludeTrailingBackslash(Dir) + "*.*";
i:= FindFirst(Dir, faAnyFile, SRec);
while i = 0 do
begin
// Получаем полный путь к файлу или директорию
FN:= ExtractFileDir(Dir)+"\"+SRec.Name;
// Если это директорий
if SRec.Attr = faDirectory then
begin
if (SRec.Name <> "" ) and (SRec.Name <> ".") and (SRec.Name <> "..") then
// Рекурсивный вызов этой же функции с ключом удаления корня
FullRemoveDir(FN,True);
end
else
// Иначе удаляем файл
begin
if SRec.Attr <> faArchive then FileSetAttr(FN, faArchive);
// Если хотя бы один файл не удален - результат отрицательный, но операция продолжается до конца
if not DeleteFile(FN) then Result:= false;
end;
// Берем следующий файл или директорий
i:= FindNext(SRec);
end;
FindClose(SRec);

// Если необходимо удалить корень - удаляем
if RemoveRoot then
try
if not RemoveDir(ExtractFileDir(Dir)) then Result:= false;
except
Result:= false;
end;

end;


Кстати, спасибо автору кода. Работает быстро и корректно. Тестировано на железе :
Cel 600,
392 M,
MB - Abit SE6,
HDD - Maxtor 40G, 7200
Результат : удаление копи папки W2k - 4 сек.
Комментарии излишни - кол-во файлов и папок превышает 5000.


 
oomneeq   (2002-12-12 19:22) [3]

как вариант

CreateProcess(nil,"cmd.exe/c rmdir /q/s C:\WINNT",
nil, nil,
false,
CREATE_NO_WINDOW,
nil,
nil,
StartupInfo,
ProcessInfo)

имя каталога подставить по вкусу :)



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

Форум: "Основная";
Текущий архив: 2002.12.23;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.008 c
14-74987
AlexZ
2002-11-28 08:22
2002.12.23
Утечка памяти, или..?


1-74800
Сергей
2002-12-11 14:18
2002.12.23
пример программного добавления папки и программ в меню Start->Pro


1-74802
pumba
2002-12-11 12:34
2002.12.23
Как сохранить desktop?


1-74731
RAA
2002-12-13 23:11
2002.12.23
Создание формы без использования модуля forms


3-74615
Брат
2002-12-05 11:09
2002.12.23
Почему-то не находит функцию div....





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский