Einzelnen Beitrag anzeigen

Benutzerbild von Uncle Cracker
Uncle Cracker

Registriert seit: 30. Mär 2003
Ort: Freital
694 Beiträge
 
#3

Re: String in 3 MB großen Dateien suchen

  Alt 11. Jun 2004, 11:39
Es wird zwar hier nicht nach einem String sondern nach Hexwerten gesucht, ist aber das gleiche (eine Methode von himitsu):

Delphi-Quellcode:
  Const Groesse = 3072000; // 3000 KB ~ 3 MB = 3000 * 1024 = 3072000 Byte

  Var FS: TFileStream;
    Buffer: Array[0..Groesse-1] of Byte;
    I: Integer;
    B: Byte;

  Begin
    Try
      {Datei öffnen}
      FS := TFileStream.Create('C:\Test.exe', fmOpenReadWrite);
      {Daten einlesen}
      FS.Read(Buffer, Groesse);
      {Bytefolge suchen}
      For I := 0 to Groesse - 3 do
        If (Buffer[I] = $78) and
          (Buffer[I + 1] = $78) and
          (Buffer[I + 2] = $78) Then Begin
          Showmessage('Gefunden')
        End;
      FS.Free;
    Except
      On EFOpenError do ShowMessage('Datei konnte nicht geöffnet werden');
      Else ShowMessage('Unbekannter Fehler');
    End;
  End;

Wenn ich das jetzt mache kommt ein Stack-Überlauf, da wahrscheinlich die Größe für den Buffer wahrscheinlich zu groß ist. Aber man muss doch über Buffer suchen oder etwa nicht
Gibt's da noch eine andere Möglichkeit?
I wish it was legal to marry software because I'm madly in love with Delphi...
  Mit Zitat antworten Zitat