Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi frage zu tip datei löschen und.. (https://www.delphipraxis.net/12726-frage-zu-tip-datei-loeschen-und.html)

Sharky 3. Dez 2003 18:30

Re: frage zu tip datei löschen und..
 
Hai horst,

wie hast Du dein "Problem" denn gelöst?
Wenn Du hier eine Antwort gibst haben alle die unsere Suchfunktion benutzen auch etwas davon.

horst 3. Dez 2003 19:07

Re: frage zu tip datei löschen und..
 
hallo...gerne.

Delphi-Quellcode:
procedure SafeDeleteFile(Filename : String);
const Buffer = 1024;
var
  arr: array [1..Buffer] of byte;
  fi: file;
  i, n: integer;
begin
  if FileExists(FileName) then
  begin
    AssignFile(fi, FileName);
    Reset(fi, 1);
    n := FileSize(fi);
    FillChar(arr, SizeOf(arr), #0);
    for i := 1 to n div Buffer do
    begin
      BlockWrite(fi, arr, n mod Buffer);
    end;
    CloseFile(fi);
    Erase(fi);
  end;
end;


// Deklaration ab Delphi 5 
procedure FindAllFiles(RootFolder: string; Mask: string = '*.*'; Recurse: Boolean = True);

var
  SR: TSearchRec;
begin
  if AnsiLastChar(RootFolder)^ <> '\' then
    RootFolder := RootFolder + '\';

  // * * * * * 
  // nur bis einschließlich Delphi 4 benötigt
  if Mask = '' then
    Mask := '*.*';
  // * * * * * 

  if Recurse then
    if FindFirst(RootFolder + '*.*', faAnyFile, SR) = 0 then
      try
        repeat
          if SR.Attr and faDirectory = faDirectory then
            // --> ein Verzeichnis wurde gefunden
            //   der Verzeichnisname steht in SR.Name
            //   der vollständige Verzeichnisname (inkl. darüberliegender Pfade) ist
            //       RootFolder + SR.Name
            if (SR.Name <> '.') and (SR.Name <> '..') then
              FindAllFiles(RootFolder + SR.Name, Mask, Recurse);
        until FindNext(SR) <> 0;
      finally
        FindClose(SR);
      end;
  if FindFirst(RootFolder + Mask, faAnyFile, SR) = 0 then
    try
      repeat
        if SR.Attr and faDirectory <> faDirectory then
        begin
          // --> eine Datei wurde gefunden
          //   der Dateiname steht in SR.Name
          //   der vollständige Dateiname (inkl. Pfadangabe) ist
          //       RootFolder + SR.Name
           // löschen/überschreiben
          SafeDeleteFile(RootFolder + SR.Name);
        end;
      until FindNext(SR) <> 0;
    finally
      FindClose(SR);
    end;
end;


procedure TForm1.Button1Click(Sender: TObject);
begin
FindAllFiles('C:\test\','*.*');
end;

emsländer 13. Okt 2004 20:19

Re: frage zu tip datei löschen und..
 
Newbiefrage: Wie kann man damit jetzt noch eine komplette Ordnerstruktur incl Inhalt löschen?

danke

EL

FYI:

.......


procedure FindAllFiles(var FileList: TStrings; RootFolder: string; Mask: string =
'*.*'; Recurse: Boolean = True);

var
SR: TSearchRec;
begin
IncludeTrailingPathDelimiter(RootFolder);

if Recurse then
if FindFirst(RootFolder + '*.*', faAnyFile, SR) = 0 then
try
repeat
if SR.Attr and faDirectory = faDirectory then
// --> ein Verzeichnis wurde gefunden
// der Verzeichnisname steht in SR.Name
// der vollständige Verzeichnisname (inkl. darüberliegender Pfade) ist
// RootFolder + SR.Name
if (SR.Name <> '.') and (SR.Name <> '..') then
FindAllFiles(FileList, RootFolder + SR.Name, Mask, Recurse);
until FindNext(SR) <> 0;
finally
FindClose(SR);
end;
if FindFirst(RootFolder + Mask, faAnyFile, SR) = 0 then
try
repeat
if SR.Attr and faDirectory <> faDirectory then
begin
// --> eine Datei wurde gefunden
// der Dateiname steht in SR.Name
// der vollständige Dateiname (inkl. Pfadangabe) ist
// RootFolder + SR.Name
FileList.Add(RootFolder + SR.Name);
end;
until FindNext(SR) <> 0;
finally
FindClose(SR);
end;
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:11 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz