Hallo Ares,
versuche es mal mit dieser Änderung:
Delphi-Quellcode:
// chunk := Max(BUFSIZE, s.Size - s.Position);
chunk := Min(BUFSIZE, s.Size - s.Position); // Min() statt Max()
SetLength(buffer, chunk);
s.Read(buffer[1], chunk);
Ein kleiner Fehler, der aber sehr schnell passiert. Man möchte eine
maximale Puffergröße angeben, muß aber dazu die Funktion
Min() benutzen. Die Fallunterscheidung habe ich entfernt - sie wird meiner Meinung nach nicht mehr benötigt.
Noch ein Hinweis: wenn der Suchstring mehrere Bytes enthält, befindet er sich eventuell nur zum Teil in einem Puffer und wird dann im nächsten fortgesetzt. Diesen Sonderfall mußt du bei der Untersuchung des Pufferinhalts berücksichtigen. Wie man so etwas prinzipiell angehen kann, findest du in
diesem Thread.
Gruß Hawkeye