Форум: "Основная";
Текущий архив: 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
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.04.03;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.008 c