Hallo liebe Delphi Community, ich komme mal wieder hobbymäßig zum Programmieren...
Folgenden Sourcecode habe ich gefunden auf delphitricks.com:
Category: Files
Title: Shred and Delete files without any trace
Date added: 15.03.2006
Hits: 12211
Delphi-Quellcode:
procedure ShredderFile(FileName:
string);
const
Buffer = 1024;
Counttowrite = 34;
FillBuffer:
array[0..5]
of Integer = ($00, $FF, $00, $F0, $0F, $00);
var
arr:
array[1..Buffer]
of Byte;
f:
file;
i, j, n: Integer;
begin
AssignFile(f, FileName);
Reset(f, 1);
n := FileSize(f);
for j := 0
to Counttowrite
do
begin
for i := 1
to n
div Buffer
do
begin
BlockWrite(f, FillBuffer[j], Buffer);
end;
end;
CloseFile(f);
RenameFile(FileName, ExtractFilepath(FileName) + '
$000000.tmp');
DeleteFile(ExtractFilepath(FileName) + '
$temp.tmp');
end;
procedure ShredderAndDeleteFile(
const FileName:
string);
var
newname:
string;
begin
newname := ExtractFilepath(FileName) + '
$temp.tmp';
if not RenameFile(FileName, newname)
then
raise
Exception.CreateFmt('
Can''
t rename %s', [FileName]);
ShredderFile(newname);
DeleteFile(newname);
end;
Beim nachvollziehen fiel mir auf: die Variable arr wird definiert aber nicht benutzt. Also lasse ich diese weg!?
CounttoWrite ist bei 34, FillBuffer[j] hat aber nur 6 Elemente zum Ansteuern... Was passiert also in 29 Schleifendurchgängen- nichts?
Bei DeleteFile im ersten Block soll eine sog. $temp.tmp Datei gelöscht werden. Gibt es die überhaupt?
Ist es normal dass in veröffentlichtem Code so viele eigenartige Fehler stecken? Oder sehe ich etwas falsch?
Vielen Dank für Antworten.