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

Вниз

Как удалить директорию с поддиректориями   Найти похожие ветки 

 
kingdom   (2002-02-25 13:24) [0]

Может уже есть такая фцнкция, мне чего-то не найти...


 
VictorT   (2002-02-25 13:47) [1]

Для операций с файловой системой я пользуюсь досовскими командами, в частности для удаления директории с поддиректориями: deltree. Для выполнения её из програмы использую ShellExecute.


 
Юрий Федоров   (2002-02-25 13:52) [2]

ForceDirectories


 
kingdom   (2002-02-25 14:02) [3]

>Юрий Федоров
Кажется ForceDirectories наоборот создает директории?

В WinApi есть DeleteFolder, но я не знаю как им пользоваться, там что-то с MAPI связано...


 
McSimm   (2002-02-25 14:17) [4]

Приведенная ниже функция умеет удалять, копировать и перемещать:

uses
ShellApi

type
TFileOperActionType = (foaCopy, foaMove, foaDelete);

function DoFileOp(WndHandle: HWND; From, To_: String; FilesOnly: Boolean; Op: TFileOperActionType): Integer;
var
OpStruc: TSHFileOpStruct;
frombuf, tobuf: Array [0..MAX_PATH] of Char;
begin
FillChar(frombuf, Sizeof(frombuf), 0);
FillChar(tobuf, Sizeof(tobuf), 0);
StrPCopy(frombuf, From);
StrPCopy(tobuf, To_);
with OpStruc do
begin
Wnd := WndHandle;
case Op of
foaCopy: wFunc:= FO_COPY;
foaMove: wFunc:= FO_MOVE;
foaDelete: wFunc:= FO_DELETE;
end;
pFrom := @frombuf;
pTo := @tobuf;
if FilesOnly then fFlags := FOF_NOERRORUI + FOF_SILENT + FOF_NOCONFIRMATION + FOF_FILESONLY
else fFlags := FOF_NOERRORUI + FOF_SILENT + FOF_NOCONFIRMATION + FOF_NOCONFIRMMKDIR;
// fAnyOperationsAborted:= False;
hNameMappings:= Nil;
lpszProgressTitle:= Nil;
end;
Result := ShFileOperation(OpStruc)
end;


 
lipskiy   (2002-02-25 15:45) [5]

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

//##############################################################################
// удаляет все содержимое каталога вместе с подкаталогами
// RemoveRoot указывает на необходимость удаления корня каталога
// при установке в False функция используется для очистки содержимого каталога
function sRemoveDir(Dir:string; RemoveRoot:boolean):Boolean;
//##############################################################################
var i:Integer;
SRec:TSearchRec;
FN:String;
begin
Result:= True;
if Dir[Length(Dir)] <> "\" then Dir:= Dir + "\";
Dir:= 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
sRemoveDir(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(Dir) then Result:= false;
except
end;

end;


 
kingdom   (2002-02-25 15:47) [6]

>McSimm
Надоже работает!!!
А есть что-нить для снятия ReadOnly на всю директорию??


 
Юрий Федоров   (2002-02-25 15:57) [7]

>kingdom
Блин, мне стыдно :(((
Вот до чего доводит работа без выходных :(((


 
kingdom   (2002-02-25 16:45) [8]

>Юрий Федоров
Да ладно, не на экзамене... :)

>McSimm
А функция ShFileOperation умеет менять атрибуты,
директорий и поддиректорий?
У меня чего-то MSDN не пашет чтобы посмотреть.



 
McSimm   (2002-02-25 16:57) [9]

>А функция ShFileOperation умеет менять атрибуты,

Нет, не умеет.
Вероятно, придется снимать рекурсивно.


 
kingdom   (2002-02-25 17:02) [10]

>McSimm
Ну это не страшно, нельзя же всевремя халявить :))



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

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

Наверх





Память: 0.46 MB
Время: 0.005 c
1-32443
Turalyon
2002-02-20 09:00
2002.03.11
Сервис


14-32560
Вадим
2002-01-27 17:44
2002.03.11
Fine Reader 5 & WinXP


3-32389
dimonka
2002-02-11 15:20
2002.03.11
Суммирование записей в столбце


4-32601
DarkReign
2001-11-29 17:50
2002.03.11
Как получить HWND задачи?


14-32549
PEC
2002-01-21 10:58
2002.03.11
Привет народ,помогите кто может !





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