IMHO.WS

IMHO.WS (http://www.imho.ws/index.php)
-   Программирование (http://www.imho.ws/forumdisplay.php?f=40)
-   -   Какой функцией в Delphi7 можно удалить каталог (включая все подкаталоги).? (http://www.imho.ws/showthread.php?t=50246)

Sancho7 02.02.2004 00:11

Какой функцией в Delphi7 можно удалить каталог (включая все подкаталоги).?
 
C:\Program Files\Моя_папка

Нужно удалить мою_папку. В ней куча папок и файлов.
Не удалять же каждый файл функцией Delete/ Подскажите как правильнее ?

Makc 02.02.2004 10:24

Код:

{ Удалить каталог со всем содержимым }

function DeleteDir(Dir  : string)  : boolean;
Var
 Found  : integer;
 SearchRec : TSearchRec;
begin
  result:=false;
  if IOResult<>0 then ;
  ChDir(Dir);
  if IOResult<>0 then begin
  ShowMessage('Не могу войти в каталог: '+Dir); exit;
  end;
  Found := FindFirst('*.*', faAnyFile, SearchRec);
  while Found = 0 do
  begin
  if (SearchRec.Name<>'.')and(SearchRec.Name<>'..') then
    if (SearchRec.Attr and faDirectory)<>0 then begin
    if not DeleteDir(SearchRec.Name) then exit;
    end else
    if not DeleteFile(SearchRec.Name) then begin
      ShowMessage('Не могу удалить файл: '+SearchRec.Name); exit;
    end;
    Found := FindNext(SearchRec);
  end;
  FindClose(SearchRec);
  ChDir('..'); RmDir(Dir);
  result:=IOResult=0;
end;


Sancho7 02.02.2004 11:10

Ой спасибоо друг. Получай пятак.

P.S
возник дополнительный вопрос. Как создать каталог и скопировать в него файлы из другого каталога ?

Makc 02.02.2004 11:21

Sancho777
Копирование со всеми подкаталогами:
Код:

var
  OpStruc: TSHFileOpStruct;
  frombuf, tobuf: Array [0..128] of Char;
Begin
 FillChar( frombuf, Sizeof(frombuf), 0 );
 FillChar( tobuf, Sizeof(tobuf), 0 );
 StrPCopy( frombuf, 'h:\hook\*.*' );
 StrPCopy( tobuf, 'd:\temp\brief' );
 With OpStruc DO Begin
  Wnd:= Handle;
  wFunc:= FO_COPY;
  pFrom:= @frombuf;
  pTo:=@tobuf;
  fFlags:= FOF_NOCONFIRMATION or FOF_RENAMEONCOLLISION;
  fAnyOperationsAborted:= False;
  hNameMappings:= Nil;
  lpszProgressTitle:= Nil;
 end;
 ShFileOperation( OpStruc );
end;


Sancho7 03.02.2004 12:44

Makc а собсна как ей пользоваться? поясни кратенько плиз.

Makc 03.02.2004 13:14

Цитата:

StrPCopy( frombuf, 'h:\hook\*.*' );
Каталог, откуда компируем
Цитата:

StrPCopy( tobuf, 'd:\temp\brief' );
Куда копируем


Часовой пояс GMT +4, время: 06:24.

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.