Einzelnen Beitrag anzeigen

TypusMensch

Registriert seit: 29. Aug 2003
Ort: Goth-A
182 Beiträge
 
Delphi 7 Enterprise
 
#8

Re: Verzeichnisse loeschen die Nicht leer sind ?

  Alt 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');
Angehängte Dateien
Dateityp: rar tm_unit.rar (50,9 KB, 18x aufgerufen)
  Mit Zitat antworten Zitat