![]() |
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:
Danke für Eure Hilfe
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; Orion3000 |
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 |
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 02:44 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz