AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Alle Dateien in einem Ordner schrotten???
Thema durchsuchen
Ansicht
Themen-Optionen

Alle Dateien in einem Ordner schrotten???

Ein Thema von mlspider · begonnen am 28. Nov 2004 · letzter Beitrag vom 8. Mär 2005
Antwort Antwort
Seite 1 von 3  1 23      
mlspider

Registriert seit: 22. Okt 2003
Ort: Berlin
661 Beiträge
 
Delphi 7 Enterprise
 
#1

Alle Dateien in einem Ordner schrotten???

  Alt 28. Nov 2004, 14:54
Hallo,

Vorab sei gesagt, daß ich in diesem Forum schon jede menge Threads über das unwiderbringliche Löschen von Dateien gefunden habe. Aber wie funktioniert das "Schrotten" (also mit Müll überschreiben und danach endgültig löschen) mit allen Dateien in einem Ordner? Wenn es geht, ohne OpenDialog.

Danke
Mario
Handbücher haben einen hohen Heizwert!!!

http://geprellte-ebay-kaeufer.de
  Mit Zitat antworten Zitat
Benutzerbild von jim_raynor
jim_raynor

Registriert seit: 17. Okt 2004
Ort: Berlin
1.251 Beiträge
 
Delphi 5 Standard
 
#2

Re: Alle Dateien in einem Ordner schrotten???

  Alt 28. Nov 2004, 15:09
Man nutzt die DP suche um nach FindFirst, FindNext und FindClose zu suchen um alle Dateien in einem Verzeichnis zu ermitteln.
Christian Reich
Schaut euch mein X-COM Remake X-Force: Fight For Destiny ( http://www.xforce-online.de ) an.
  Mit Zitat antworten Zitat
Benutzerbild von nailor
nailor

Registriert seit: 12. Dez 2002
Ort: Karlsruhe
1.989 Beiträge
 
#3

Re: Alle Dateien in einem Ordner schrotten???

  Alt 28. Nov 2004, 15:26
am besten in der codelib nach der rekursiven variante.
Michael N.
http://nailor.devzero.de/code/sharpmath/testing/ --- Tests, Feedback, Anregungen, ... aller Art sehr willkommen!
::: don't try so hard - it'll happen for a reason :::
  Mit Zitat antworten Zitat
mlspider

Registriert seit: 22. Okt 2003
Ort: Berlin
661 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: Alle Dateien in einem Ordner schrotten???

  Alt 28. Nov 2004, 15:27
Danke
Mario
Handbücher haben einen hohen Heizwert!!!

http://geprellte-ebay-kaeufer.de
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#5

Re: Alle Dateien in einem Ordner schrotten???

  Alt 28. Nov 2004, 15:28
Zitat von mlspider:
Wenn es geht, ohne OpenDialog.
Und am besten noch ohne Nacgfragen beim User...

Also so Sachen blick ich immer sehr skeptisch entgegen und frag mich immer, was der Sinn von so Spielchen sein soll.
  Mit Zitat antworten Zitat
Benutzerbild von Aenogym
Aenogym

Registriert seit: 7. Mär 2004
Ort: Schwerin
1.089 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: Alle Dateien in einem Ordner schrotten???

  Alt 28. Nov 2004, 15:48
Zitat von Jelly:
Zitat von mlspider:
Wenn es geht, ohne OpenDialog.
Und am besten noch ohne Nacgfragen beim User...

Also so Sachen blick ich immer sehr skeptisch entgegen und frag mich immer, was der Sinn von so Spielchen sein soll.
vielleicht programmiert er ja einen datei-schredder...

Aenogym
Steffen Rieke
Was nicht buzzt, wird buzzend gemacht!
http://blog.base-records.de
http://www.base-records.de
  Mit Zitat antworten Zitat
mlspider

Registriert seit: 22. Okt 2003
Ort: Berlin
661 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: Alle Dateien in einem Ordner schrotten???

  Alt 28. Nov 2004, 15:53
Genau, bin nur nicht auf die Bezeichnung "Shredder" gekommen. Muß man denn immer gleich an böswillige Absichten denken??? Ich habe nicht vor, jemanden zu schädigen!!!

Ich suche lediglich eine Methode, wie man Dateien in einem Ordner, ohne jeweils eine Datei auswählen zu müssen, in einem Rutsch sicher und unwiederbringlich zu löschen.
Mario
Handbücher haben einen hohen Heizwert!!!

http://geprellte-ebay-kaeufer.de
  Mit Zitat antworten Zitat
mlspider

Registriert seit: 22. Okt 2003
Ort: Berlin
661 Beiträge
 
Delphi 7 Enterprise
 
#8

Re: Alle Dateien in einem Ordner schrotten???

  Alt 28. Nov 2004, 18:33
An alle den es interessiert. Ich habe das Problem mit einem Code-Schnipsel aus einen anderem Forum wie folgt gelöst:

Delphi-Quellcode:
function WipeFile(const szFilename: string): boolean;
var
  f : file;
  buf : array[0..65535]of byte;
  i,
  iRead,
  iWrite : integer;
  fpos : longint;
begin
  {$I-}
  AssignFile(f,szFileName);
  ReSet(f,1);


  if(IoResult = 0) then begin
    repeat
      fPos := filepos(f); // aktuelle Position merken
      BlockRead(f,buf,sizeof(buf),iRead); // max. 65k lesen

 
      // der tatsächlich gelesene Wert steckt in "iRead" und
      // ist irgendwann Null, wenn das Ende der Datei erreicht
      // wurde und keine Bytes mehr gelesen werden können
      if(iRead > 0) then
        // (alte?) Methode des DOD (US-Verteidigungsministerium):
        // einmal 00 schreiben; einmal FF schreiben (3 Wiederholungen)
        // dann F6 schreiben
        // (Norton WipeInfo macht´s heute noch so; außer, das 0x01
        // anstelle von 0xff angegeben ist)
        for i := 1 to 7 do begin
          case i of
            1,3,5 : fillchar(buf,iRead, 0); // Inhalt mit 0x00 überschreiben
            2,4,6 : fillchar(buf,iRead,255); // Inhalt mit 0xff überschreiben
            7 : fillchar(buf,iRead,246); // Inhalt mit 0xf6 überschreiben
          end;


          seek(f,fPos); // gespeicherte Position suchen
          BlockWrite(f,buf,iRead,iWrite); // Puffer schreiben
          if(iWrite <> iRead) then break; // Fehler! :o(
        end;
    until(iRead = 0) or (iWrite <> iRead);

 
    CloseFile(f); // alte Datei schließen
    Rename(f,'D'); // alten Namen "vernichten"
    ReWrite(f,1); // alte Position "vernichten"
    CloseFile(f);
    Erase(f); // Datei löschen
  end;
  {$I+}

 
  Result := (IoResult = 0);
end;

 
Procedure DeleteFiles(aPath, aFindMask: String; aWithSub: Boolean);
Var
  FindRec: tSearchRec;
Begin
  // Wenn aPath oder aFind nicht angegeben ist
  // dann raus
  If (aPath = '') or (aFindMask = '') Then
    Exit;


  // Wenn am Ende der Pfadangabe noch kein \ steht, dieses hinzufügen
  If aPath[Length (aPath)] <> '\Then
    aPath := aPath + '\';

 
  // Im aktuellen Verzeichnis nach der Datei suchen
  If FindFirst (aPath + aFindMask, faAnyFile, FindRec) = 0 Then
    Repeat
      If (FindRec.Name <> '.') and (FindRec.Name <> '..') Then
        // ...Ergebnis löschen
        WipeFile(aPath + FindRec.Name);
    Until FindNext (FindRec) <> 0;

 
  FindClose (FindRec);

 
  // Wenn nicht in Unterverzeichnissen gesucht werden soll dann raus
  If Not aWithSub Then
    Exit;

 
  // In Unterverzeichnissen weiter suchen
  If FindFirst (aPath + '*.*', faAnyFile, FindRec) = 0 Then
    Repeat
      If (FindRec.Name <> '.') and (FindRec.Name <> '..') Then
        // Feststellen, ob es sich um ein Verzeichnis handelt
        If Boolean (FindRec.Attr and faDirectory) Then
          // Funktion erneut aufrufen, um Verzeichnis zu durchsuchen (Rekursion)
          DeleteFiles (aPath + FindRec.Name, aFindMask, aWithSub);
    Until FindNext (FindRec) <> 0;


   FindClose (FindRec);
End;

procedure TForm1.Button1Click(Sender: TObject);
begin
 DeleteFiles ('j:\test', '*.*', True);
end;
Wobei J:\Test für mein Versuchs-Ordner stand.

getestet! Es funktioniert! Das einzigste was mich daran noch stört, das die leeren Ordner erhalten bleiben. Aber vielleicht gibt es hierfür auch noch eine Lösung.
Mario
Handbücher haben einen hohen Heizwert!!!

http://geprellte-ebay-kaeufer.de
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#9

Re: Alle Dateien in einem Ordner schrotten???

  Alt 28. Nov 2004, 19:12
In welchem Forum hättest du denn die Lösung? Hier oder im DF?

Wenn dich die leeren Ordner stören, dann solltest du sie löschen. Sie sind ja leer. Als Tipp: Erst den Ordner löschen, dann eine temporäre Datei mit dem gleichen Namen erzeugen, selbige umbenennen, damit sie nur noch aus einem Zeichen besteht, und dann löschen.

Oder den Ordner umbenennen, damit er nur noch aus einem Zeichen besteht, und dann löschen.
  Mit Zitat antworten Zitat
mlspider

Registriert seit: 22. Okt 2003
Ort: Berlin
661 Beiträge
 
Delphi 7 Enterprise
 
#10

Re: Alle Dateien in einem Ordner schrotten???

  Alt 28. Nov 2004, 19:17
Genau dieses Forum. Und wenn mich nicht alles täuscht, ist der Code sogar von Dir! Allerdings kann ich Deinen Tip nicht nach vollziehen.
Mario
Handbücher haben einen hohen Heizwert!!!

http://geprellte-ebay-kaeufer.de
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:45 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz