Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Mehrere Dateien Schreddern (https://www.delphipraxis.net/26880-mehrere-dateien-schreddern.html)

HW764 30. Jul 2004 18:59


Mehrere Dateien Schreddern
 
Ich habe diesen Code hier (von shmia)

Delphi-Quellcode:
procedure ShredderFile(const filename:string);
const
  Fillchars: array[0..5] of char = (Char($00), Char($FF), Char($00), Char($F0), Char($0F), Char($00));
  BLOCK_SIZE = 8096;
var
   fs : TFileStream;
   buffer : String;
   i, j : Integer;
begin
   fs := TFileStream.Create(filename, fmOpenReadWrite or fmShareExclusive);
   try
      // Datei auf nächste Blockgrösse verlängern, damit der "Slack" überschrieben
      // wird
      fs.Size := ((fs.Size div BLOCK_SIZE) +2) * BLOCK_SIZE;

      // Datei soll mindestens 2 MB gross sein, damit die Schreibcaches der
      // Festplatten überflutet werden
      if fs.Size < 2097152 then
         fs.Size := 2097152;


      for i := 0 to 5 do
      begin
         fs.Position := 0;
         buffer := StringofChar(Fillchars[i], BLOCK_SIZE);

         for j := 1 to fs.Size div BLOCK_SIZE do
         begin
            fs.WriteBuffer(buffer[1], BLOCK_SIZE);
         end;
         FlushFileBuffers(fs.Handle);
      end;

      // wir verarschen den Geheimdienst und schreiben zum Schluss
      // seltsame Schrottdaten
      // wirkliche Zufallsdaten wären besser, aber das reicht doch auch schon
      buffer := 'Terror, Bin Laden, Sprengstoff, Waffen, Plutonium';
      fs.Position := 0;
      for j := 1 to fs.Size div Length(buffer) do
      begin
         fs.WriteBuffer(buffer[1], Length(buffer));
      end;
   finally
      fs.Free;
   end;
end;


procedure ShredderAndDeleteFile(const filename:string);
var
   newname : string;
begin
   // zuerst umbennen, dann später keine Rückschlüsse auf den Dateinamen möglich sind
   newname := ExtractFilepath(Filename)+'$000000.tmp';

   if not RenameFile(Filename, newname) then
      raise Exception.CreateFmt('Can''t rename file %s', [filename]);

   ShredderFile(newname);

   DeleteFile(newname);
end;
So nun meine Frage. Ich habe einen Opendialog. Ich habe eingestellt,
dass man mehrere Dateien auswählen kann. Wähle ich nun
mehrere an, überschreibt er nur die erste. Nun, wie muss ich
den Code ändern, dass ich mehrere Dateien auswählen kann, und
dass er sie nacheinander Schreddert?

Vielen Dank!

nailor 30. Jul 2004 19:01

Re: Mehrere Dateien Schreddern
 
einfach für alle dateien (keine ahnung, wei der dialog die zurückgibt - vielleicht einfach per for schleife durch ne stringlist gehen) die prozedur aufrufen

HW764 30. Jul 2004 19:03

Re: Mehrere Dateien Schreddern
 
hab das noch nie gemacht kann mir einer helfen?

Luckie 30. Jul 2004 19:04

Re: Mehrere Dateien Schreddern
 
Die Eigenschaft heißt Files vom OpenDialog, wo die Dateien alle drinstehen. Einfach in einer for-Schleife alle druchgehen und jedes mal deine Funktion aufrufen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:37 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