Entwickler-Ecke

Dateizugriff - komplettes Verzeichnis löschen


delphimike - Mo 05.09.05 15:34
Titel: komplettes Verzeichnis löschen
Hallo

ich möchte ein komplettes Verzeichnis samt Inhalt und Unterverzeichnisse löschen
Muß ich das zu Fuß programmieren oder gibt es da eine elagantere Lösung?
Removedir beseitig ja nur den Ordner eines leeren Verzeichnisses

Gruß Mike


chrisw - Mo 05.09.05 15:46


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
procedure DelTree(dir: string);
var
  Search : TSearchRec;
  fp: FILE of byte;
  ok: integer;
begin
  ok := FindFirst(dir + '\*.*',faAnyFile,Search);
  while ok = 0 do  begin
    if ((Search.Name <> '.' ) and (Search.Name <> '..')) then begin
      if ((Search.Attr and faDirectory) > 0then begin
        DelTree(dir + '\' + Search.Name);
        // sub branch has been searched, so delete it
        RmDir(dir + '\' + Search.Name);
      end
      else begin
        // do something with the file
        assign(fp,dir + '\' + Search.Name);
        erase(fp);
      end;
    end;
    ok := FindNext(Search);
  end;
  FindClose(Search);
  try
    RmDir(dir);
  except
    //on EInOutError do ShowMessage('Couldn''t remove '+dir+', sorry.'+
    //                              #13+
    //                              'There was a sharing violation. (on NT at least)');
  end;
end;


s-off - Mo 05.09.05 15:49
Titel: Re: komplettes Verzeichnis löschen
huhu,


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
uses ShellApi

function TForm1.DeleteDirectory(sDirectory: string): Boolean;
var
   FOS: TSHFileOpStruct;
begin
   ZeroMemory(@FOS, SizeOf(FOS));
   with FOS do begin
      wFunc := FO_DELETE;
      fFlags := FOF_SILENT or FOF_NOCONFIRMATION;
      pFrom := PChar(sDirectory + #0);
   end;
   Result := (0 = ShFileOperation(FOS));
end;


Moderiert von user profile iconraziel: Code- durch Delphi-Tags ersetzt.


delphimike - Mo 05.09.05 16:00

... danke für die codes ...

Mike


delphimike - Di 06.09.05 09:32

Hallo nochmal

der letztere der beiden Codes ist vom Code-Leistungsverhältnis echt nicht schlecht
So wie das aussieht kann man ihn auch zum Kopieren von ganzen Verzeichnissen benutzen, aber wie? Wo finde ich dazu in der Hilfe die einzustellenden Parameter. Delphi 2005 ist wie ich schon oft bemerkte sehr sparsam mit Hilfetextzuordnungen...

Gruß Mike


rochus - Di 06.09.05 11:05

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/reference/structures/shfileopstruct.asp