Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.045 c
1-1080198590
Антон_1999
2004-03-25 10:09
2004.04.11
Как заполнить ComboBox всеми шрифтами??


6-1076064199
dr Tr0jan
2004-02-06 13:43
2004.04.11
Сервер на Winsock


14-1082017686
MPS
2004-04-15 12:28
2004.04.11
Хуки, хуки, и ещё раз Хуки


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


1-1080161677
Александр из Минска
2004-03-24 23:54
2004.04.11
ДОС-комманда





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский