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