Главная страница
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.49 MB
Время: 0.032 c
1-1082645647
alienserg
2004-04-22 18:54
2004.04.11
Кнопка динамической формы на панели задач.


6-1075709761
Soi
2004-02-02 11:16
2004.04.11
Работа с БД по сети


8-1071861824
mmmaloy
2003-12-19 22:23
2004.04.11
mp3: ID3v1, ID3v2


1-1082444567
Сережа550
2004-04-20 11:02
2004.04.11
GUI-Консоль


3-1079281541
Slider88
2004-03-14 19:25
2004.04.11
Проблема русских букв в SQL-сервере