Главная страница
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.044 c
14-1079632390
Ig
2004-03-18 20:53
2004.04.11
Реестр ... надо срочно!


3-1081488012
sohat
2004-04-09 09:20
2004.04.11
DBRichEdit - можно ли в поле сохранять только текст


3-1081697458
Mishenka
2004-04-11 19:30
2004.04.11
Добавление записи в таблицу


6-1076049111
Антоний
2004-02-06 09:31
2004.04.11
Firewall


14-1079089350
_none_
2004-03-12 14:02
2004.04.11
небольшой соц.опрос: купили бы вы электроскутер?