Tuesday, December 12, 2006

procedure WipeFile(filename : String);
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;
Deletefile(filename);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
WipeFile('c:\soubor.exe');
end;