Форум: "Основная";
Текущий архив: 2004.04.11;
Скачать: [xml.tar.bz2];
ВнизКак программно удалить папку? Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.05 c