Autor Beitrag
delphimike
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 117



BeitragVerfasst: Mo 05.09.05 15:34 
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

_________________
kaum macht man was richtig, schon gehts!
chrisw
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 439
Erhaltene Danke: 3

W2K
D7
BeitragVerfasst: Mo 05.09.05 15:46 
ausblenden volle Höhe 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;

_________________
Man sollte keine Dummheit zweimal begehen, die Auswahl ist schließlich groß genug.
s-off
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 35

WinXP
D7 Prof
BeitragVerfasst: Mo 05.09.05 15:49 
huhu,

ausblenden 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.

_________________
greetz
s-off
delphimike Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 117



BeitragVerfasst: Mo 05.09.05 16:00 
... danke für die codes ...

Mike

_________________
kaum macht man was richtig, schon gehts!
delphimike Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 117



BeitragVerfasst: 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

_________________
kaum macht man was richtig, schon gehts!
rochus
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 416

Win XP Prof, Fedora Core 4, SuSE 7.0
D7 Ent, D2005 Pers
BeitragVerfasst: Di 06.09.05 11:05 

_________________
Im Nachhinein ist man immer ein Schlauch!
"Dream as if you'll live forever, live as if you'll die today!" James Dean