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

Вниз

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

 
Folder   (2004-03-24 08:22) [0]

Вопрос: имеется папка, к примеру "с:\Папка", как программно, при нажатии на кнопку, удалить эту папку? Может должно использоваться что-то типа DeleteFolder? Удалить файл-это без проблем, а вот с папкой....Заранее благодарю.


 
Вованчик ©   (2004-03-24 08:31) [1]

RemoveDir

Deletes an existing empty directory.

Unit

SysUtils

Category

file management routines

function RemoveDir(const Dir: string): Boolean;

Description

Call RemoveDir to remove the directory specified by the Dir parameter. The return value is True if a new directory was successfully deleted, False if an error occurred. The directory must be empty before it can be successfully deleted.


 
Романов Р.В. ©   (2004-03-24 08:34) [2]

SHFileOperation


 
Anatoly Podgoretsky ©   (2004-03-24 08:47) [3]

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


 
Folder   (2004-03-24 09:49) [4]

RemoveDir работает если директория пустая. Это не подходит. У меня она не пустая будет.


 
Folder   (2004-03-24 10:32) [5]

Есть еще варианты?


 
Романов Р.В. ©   (2004-03-24 10:34) [6]

SHFileOperation


 
Folder   (2004-03-25 08:11) [7]

С помощью SHFileOperation вроде только с файлами можно работать.
Мне надо удалить НЕ ПУСТУЮ папку.


 
Романов Р.В. ©   (2004-03-25 08:22) [8]

SHFileOperation может удалить непустую папку со всеми подкаталогами


 
Folder   (2004-03-25 09:26) [9]

Романов Р.В. если не трудно приведи пример удаления....


 
Batoon ©   (2004-03-25 09:35) [10]

УДАЛЯЕТ НАЧИСТО
procedure Erase(Owner: Integer;  WichFiles: String);
var
Struct : TSHFileOpStructA;
begin
While pos(";",WichFiles)>0 do
WichFiles[pos(";",WichFiles)]:=#0;
WichFiles:=WichFiles+#0#0;
with Struct do
begin
wnd        :=Owner;
wFunc      :=FO_Delete;
pFrom      :=PChar(WichFiles);
pTo        :=nil;
fFlags:=FOF_NOCONFIRMATION;
fFlags:=fflags or 0 ;
fflags:=fflags or FOF_SIMPLEPROGRESS;
hNameMappings:=nil;
lpszProgressTitle:="ha-ha-ha!!!";
end;
SHFileOperationA(Struct);
end;

OWNER я ставил на 1.
Этот код взял из Kuliba и изменил только в нем кое-что.


 
Folder   (2004-03-25 10:03) [11]

Batoon - работает но громоздкий.....видно нет простого решения для такой простой задачи...


 
MetalFan ©   (2004-03-25 12:25) [12]

function ClearDir(const Path: string; Delete: Boolean): Boolean;
const
{$IFDEF WIN32}
 FileNotFound = 18;
{$ELSE}
 FileNotFound = -18;
{$ENDIF}
var
 FileInfo: TSearchRec;
 DosCode: Integer;
begin
 Result := DirExists(Path);
 if not Result then Exit;
 DosCode := FindFirst(NormalDir(Path) + "*.*", faAnyFile, FileInfo);
 try
   while DosCode = 0 do begin
     if (FileInfo.Name[1] <> ".") and (FileInfo.Attr <> faVolumeID) then
     begin
       if (FileInfo.Attr and faDirectory = faDirectory) then
         Result := ClearDir(NormalDir(Path) + FileInfo.Name, Delete) and Result
       else if (FileInfo.Attr and faVolumeID <> faVolumeID) then begin
         if (FileInfo.Attr and faReadOnly = faReadOnly) then
           FileSetAttr(NormalDir(Path) + FileInfo.Name, faArchive);
         Result := DeleteFile(NormalDir(Path) + FileInfo.Name) and Result;
       end;
     end;
     DosCode := FindNext(FileInfo);
   end;
 finally
   FindClose(FileInfo);
 end;
 if Delete and Result and (DosCode = FileNotFound) and
   not ((Length(Path) = 2) and (Path[2] = ":")) then
 begin
   RmDir(Path);
   Result := (IOResult = 0) and Result;
 end;
end;

взято из RXовской библиотеки



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

Текущий архив: 2004.04.11;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.031 c
3-1079087412
AGN
2004-03-12 13:30
2004.04.11
Table to TreeView


14-1079693529
Abros
2004-03-19 13:52
2004.04.11
Чем выше температура проца или видухи те больше косяков в играх?


14-1081172037
VMcL
2004-04-05 17:33
2004.04.11
Поголубел :))


1-1082447210
SerSar
2004-04-20 11:46
2004.04.11
Разрыв страницы в Excel


6-1079372447
leonidus
2004-03-15 20:40
2004.04.11
Для чего нужен компонет IdAntiFreeze?