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




Вниз

Полное удаление каталога 


me2   (2003-03-21 11:31) [0]

Народ, подскажите как полностью удалить каталог, а не помещать его в корзину?



stone   (2003-03-21 11:35) [1]

Shift+Del



me2   (2003-03-21 11:40) [2]

Нет, я имею ввиду программно



AlexKr   (2003-03-21 13:19) [3]

SHFileOperation и <F1>



me2   (2003-03-21 13:28) [4]

Что, никто не знает?. Народ, проснитесь!!!



Clickmaker   (2003-03-21 13:40) [5]

AlexKr (21.03.03 13:19)
SHFileOperation и <F1>


Народ проснулся. А вот ты, похоже, еще нет :-)



Leran2002   (2003-03-21 13:48) [6]

Во когдато написал, мож подойдет:

{var
List:TStringList;}

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
procedure MyClearDir(MyPath:string;DelFolder:boolean);
var
SR:TSearchRec;
begin
MyPath:=Trim(MyPath);
if MyPath="" then exit;

if not DirectoryExists(MyPath) then exit;

if MyPath[Length(MyPath)]<>"\" then MyPath:=MyPath+"\";

if FindFirst(MyPath+"*.*",faAnyFile,SR)=0 then
repeat
if (SR.Name<>".")and(SR.Name<>"..") then
if DelFolder and((SR.Attr and faDirectory)<>0) then begin
MyClearDir(MyPath+SR.Name,true);
// List.Add("Папка удалена: "+MyPath+SR.Name);
RemoveDir(MyPath+SR.Name);
end
else if (SR.Attr and faDirectory)=0 then
// List.Add("Файл удален: "+MyPath+SR.Name);
sysutils.DeleteFile(MyPath+SR.Name);
until FindNext(SR)<>0;
sysutils.FindClose(SR);
end;
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Все что закоментарено - для проверки правильности работы...



andrey_pst   (2003-03-21 13:49) [7]

procedure TForm1.DeleteDirs(Dir : string);
var
sr : TSearchRec;
begin
if FindFirst(Dir + "\*.*", faAnyFile, sr) = 0 then
begin
repeat
if (sr.Attr and faDirectory) <> faDirectory then
begin
if (sr.Attr and faArchive) = faArchive then
FileSetAttr(Dir + "\" + sr.Name, faArchive);
DeleteFile(Dir + "\" + sr.Name);
end
else
if (sr.Name <> "..") and (sr.Name <> ".") then
DeleteDirs(Dir + "\" + sr.Name);
until FindNext(sr) <> 0;
FindClose(sr);
RemoveDir(ExtractFileDir(Dir + "\"));
end;
end;



Романов Р.В.   (2003-03-21 14:02) [8]

или досовская команда rd через shellexecute



me2   (2003-03-21 16:20) [9]

У меня получилось так
procedure TMainForm.DeleteDirectoryTree(AHandle: THandle;
AFromDir: string);
var
SHFileOPStruct: TSHFileOPStruct;
begin
with SHFileOPStruct do
begin
Wnd := AHandle;
wFunc := FO_DELETE;
pFrom := PChar(AFromDir);
pTo := nil;
fFlags := FOF_NOCONFIRMATION or FOF_RENAMEONCOLLISION or FOF_SIMPLEPROGRESS;
fAnyOperationsAborted := False;
hNameMappings := nil;
lpszProgressTitle := nil;
end;
SHFileOperation(ShFileOpStruct);
end;



Intell   (2003-03-23 17:58) [10]

В примере стираются все файлы в каталоге и сам каталог. (Пример заподлянки, удаляется
каталог "Games" на диске C:\)



procedure TForm1.Button1Click(Sender: TObject);
var
DirInfo: TSearchRec;
r: integer;
begin
r := FindFirst("C:\Games\*.*", FaAnyfile, DirInfo);
while r = 0 do
begin
if ((DirInfo.Attr and FaDirectory <> FaDirectory) and
(DirInfo.Attr and FaVolumeId <> FaVolumeID)) then
if DeleteFile(pChar("C:\Games\" + DirInfo.Name))= false then
ShowMessage("Unable to delete: C:\Games\"+DirInfo.Name);
r := FindNext(DirInfo);
end;
SysUtils.FindClose(DirInfo);
if RemoveDirectory("C:\Games\") = false then
ShowMessage("Unable to delete directory: C:\Games\");
end;

sergein@nojabrsk.ru




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




Наверх





Память: 0.73 MB
Время: 0.027 c
14-6693           adogg                 2003-03-15 12:45  2003.04.03  
Генераторы случайных чисел


3-6358            Vick                  2003-03-13 18:34  2003.04.03  
Увеличение размера базы в зависимости от заполнености полей


3-6324            Staraya               2003-03-16 21:42  2003.04.03  
Вставка записи в бд


14-6701           ruben                 2003-03-13 03:37  2003.04.03  
Нужна программа, которая вычисляет и переводит в шестнадцатирич


14-6791           panov                 2003-03-17 21:21  2003.04.03  
Завидуйте...