Hey,
ich versuche gerade folgendes vergeblich.
Ich will eine Datei den String "r" durchsuchen lassen.
Wo bei er aber immer bei jeder prüfung um 512 Stellen
nach vor springen soll.
Wenn er es gefunden hat soll er jede weiteren Byte mit 00h
überschreiben 110000 Stellen lang und wieder nach den string "r" suchen.
Aber bei diesen Code ist die Datei plötzlich 0 bytes groß und es hängt.
Form1.Label1.caption ist ein zähler der die Stringstellen angibt.
Kann dieser Code auch bei Dateien über 5GB und bei
WinXP 64Bit verwendet werden?
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26:
| var sizeprogress : integer; r,r1,w : string:
begin if (Form1.CheckBox2.checked = true) then
begin r := 'YXDERGDF'; w := #00; sizeprogress := GetFileSize(Form1.Edit1.Text);
imageread := TFileStream.create(Form1.Edit1.Text, fmcreate or fmShareDenyNone); repeat imageread.seek(+512, sofromcurrent); imageread.Read(r1, 8); Form1.Label1.Caption := IntToStr(imageread.position) + ' / ' + InttoStr(sizeprogress) + ' bytes'; if (r1 = r) then begin imageread.Write(w, 110000); end; until imageread.Position = sizeprogress - 1000; imageread.free; end; end; |
Moderiert von
raziel: Code- durch Delphi-Tags ersetzt.