Delphi-PRAXiS

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)

horst 3. Dez 2003 09:29


frage zu tip datei löschen und..
 
wie kann ich diesen tip nicht nur auf eine datei, sondern auf einen ganzen ordner anwenden?
wenn möglich auch ohne opendialog mit z.b. mit absoluter pfadangabe.
http://www.delphipraxis.net/internal_redirect.php?t=770

grüße ;)

Luckie 3. Dez 2003 09:32

Re: frage zu tip datei löschen und..
 
Such nmal in der Code-Lib nach FindFirstFindFirst.

Sharky 3. Dez 2003 09:32

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

dafür wirst Du mit FindFist - FindNext den Ordner durchsuchen müssen und dann die Dateien einzeln überschreiben und anschließend löschen müssen.

[Edit]Ich bin heute echt zu langsam. Immer ist das Luckie schneller[/Edit]

horst 3. Dez 2003 09:42

Re: frage zu tip datei löschen und..
 
hallo und danke für euren schnellen antworten.
habe mir den tip
http://www.delphipraxis.net/internal...ight=findfirst
angeschaut, ganz schön komplex.
mag mir jemand dabei helfen?

Luckie 3. Dez 2003 09:44

Re: frage zu tip datei löschen und..
 
Zitat:

Zitat von horst
mag mir jemand dabei helfen?

Klar.

horst 3. Dez 2003 09:46

Re: frage zu tip datei löschen und..
 
ok...stimmt, ich meld mich dann wieder!

horst 3. Dez 2003 11:09

Re: frage zu tip datei löschen und..
 
ich komme nicht weiter damit, krieg das nicht zusammen, mag mir das jemand zeigen?

habe damit rumprobiert:
Delphi-Quellcode:
function TForm1.datei(sDrive: String): Boolean;
var
  SR: TSearchRec;
begin
  Result := SysUtils.FindFirst(sDrive + '\*.*', faAnyFile, SR) = 0;
  SysUtils.FindClose(SR);
end;
Delphi-Quellcode:
kriege aber result nicht hier rein
 AssignFile(fi, '??');

Sharky 3. Dez 2003 11:15

Re: frage zu tip datei löschen und..
 
Zitat:

Zitat von horst
ich komme nicht weiter damit, krieg das nicht zusammen, mag mir das jemand zeigen?

Hai horst,

was hast Du denn schon? Zeig mal deinen Code.

scp 3. Dez 2003 11:17

Re: frage zu tip datei löschen und..
 
Nimm doch das Beiapiel zum löschen der datei und mach ne Proc drauss:

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;
Dann änderst du nur die Zeile im anderen Beispiel:

Delphi-Quellcode:
Form1.Memo1.Lines.Add(RootFolder + SR.Name);
in:
Delphi-Quellcode:
SafeDeleteFile(RootFolder + SR.Name);

horst 3. Dez 2003 17:13

Re: frage zu tip datei löschen und..
 
@ Sharky ...das war alles :oops:
@ scp ... es funktioniert wunderbar und was das beste ist, ich habe es verstanden, danke :love:

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 01:12 Uhr.

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