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

Вниз

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

 
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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.007 c
3-32384
af
2002-02-11 16:52
2002.03.11
Можно ли программно добавлять значения для DBcombobox?


7-32600
Swan70
2001-11-28 10:37
2002.03.11
Кто захватил файл


14-32563
Егор
2002-01-18 08:51
2002.03.11
Microsoft Agent


1-32466
KiD
2002-02-21 19:03
2002.03.11
Как организовать вывод чисел по возрастанию(убыванию)?


14-32571
ТеньЛуны
2002-01-28 15:50
2002.03.11
А можно ли...