Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Dateien überschreiben (https://www.delphipraxis.net/8124-dateien-ueberschreiben.html)

orion3000 29. Aug 2003 08:22


Dateien überschreiben
 
Hallo,

kann mir irgendjemand sagen was hier falsch ist ....

Ich habe eine Procedure geschrieben diese soll eine Datei durch überschreiben löschen, dies Funktioniert auch ganz gut aber das Problem hier ist das die Funktion nicht bis zu Ende sondern darüber hinaus geht.
Das heißt wenn ich die Procedure starte dann wird zwar die Datei überschrieben aber wenn die Datei 1MB groß ist wird daraus eine Dateigröße die den gesammten freien Speicher der Festplatte belegt.

Die Procedure Stoppt einfach nicht wenn das Ende der Datei erreicht ist.

Delphi-Quellcode:
procedure WipeFile(FileName:string;Delfile:boolean);
var
  buffer: array [0..4095] of Byte;
  max, n: LongInt;
  i: Integer;
  fs: TFileStream;

  procedure RandomizeBuffer;
  var
    i: Integer;
  begin
    for i := Low(buffer) to High(buffer) do
      buffer[i] := Random(256);
  end;
begin
  fs := TFilestream.Create(FileName, fmOpenReadWrite or fmShareExclusive);
  try
    for i := 1 to 3 do
    begin
      RandomizeBuffer;
      max := fs.Size;
      fs.Position := 0;
      while max <> 0 do
      begin
        if max <> SizeOf(buffer) then
          n := SizeOf(buffer)
        else
          n := max;
        fs.Write(Buffer, n);
        max := max - n;
      end;
      FlushFileBuffers(fs.Handle);


    end;
  finally
    fs.Free;
  end;


  if Delfile then
  Deletefile(pchar(FileName));
end;
Danke für Eure Hilfe
Orion3000

CalganX 29. Aug 2003 08:25

Re: Dateien überschreiben
 
Hi und herzlich willkommen in der Delphi-PRAXiS! :hi:

Das Problem ist, dass einmal schreiben drüber gehen kann und du prüfst, ob max <> 0 ist. Versuch das mal mit max > 0. Dann sollte es gehen.

Chris

orion3000 29. Aug 2003 09:09

Re: Dateien überschreiben
 
hallo Chakotay1308,

danke erstmal für deine schnelle Hilfe und es funktioniert endlich.

Gruß
Orion300


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