Registriert seit: 29. Aug 2003
Ort: Goth-A
182 Beiträge
Delphi 7 Enterprise
|
Re: Verzeichnisse loeschen die Nicht leer sind ?
18. Nov 2004, 12:50
1. Zählen von Dateien und/oder Verzeichnissen über einen Parameter. Es kann auch Rekursiv gesucht werden.
Unit:
Delphi-Quellcode:
function GetDirFileFolderCount(dir: string; subdir: Boolean; FileCount : Boolean = True; FolderCount : Boolean = False): Int64;
var
rec : TSearchRec;
found : Integer;
intFileCount : Int64;
intFolderCount : Int64;
begin
Result := 0;
dir := IncludeTrailingPathDelimiter(dir);
found := FindFirst(dir + '*.*', faAnyFile, rec);
while found = 0 do
begin
if (rec.Attr and faDirectory > 0) and (rec.Name[1] <> '.') and FolderCount then Inc(Result);
if (rec.Attr and faDirectory = 0) and (rec.Name[1] <> '.') and FileCount then Inc(Result);
if (rec.Attr and faDirectory > 0) and (rec.Name[1] <> '.') and subdir then Inc(Result, GetDirFileFolderCount(dir + rec.Name, subdir, FileCount,FolderCount));
found := FindNext(rec);
end;
FindClose(rec);
end;
Beispiel:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
Screen.Cursor := crHourGlass;
// Nur Files
Label1.Caption :=
IntToStr(GetDirFileFolderCount('C:\programme',False,True,False));
// Nur Folder
Label2.Caption :=
IntToStr(GetDirFileFolderCount('C:\programme',False,False,True));
// Files und Folder
Label3.Caption :=
IntToStr(GetDirFileFolderCount('C:\programme',False,True,True));
// REKURSIV
// Nur Files
Label4.Caption :=
IntToStr(GetDirFileFolderCount('C:\programme',True,True,False));
// Nur Folder
Label5.Caption :=
IntToStr(GetDirFileFolderCount('C:\programme',True,False,True));
// Files und Folder
Label6.Caption :=
IntToStr(GetDirFileFolderCount('C:\programme',True,True,True));
Screen.Cursor := crDefault;
end;
2. Löschen von Verzeichnissen
Unit:
Delphi-Quellcode:
function VerzLoeschen(Verzeichnis : 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(Verzeichnis + #0);
end;
RESULT := (0 = ShFileOperation(fos));
end;
Beispiel:
VerzLoeschen('c:\ordner');
|
|
Zitat
|