Monday, December 04, 2006

try
SearchFor := StrAlloc( Length( forString )+1 );
StrPCopy( SearchFor, forString );
if not caseSensitive then AnsiUpper(SearchFor);
GetMem( pBuf, BufferSize );
filesize := System.Filesize( F );
bytesRemaining := filesize;
pPos := Nil;
while bytesRemaining > 0 do
begin
if bytesRemaining >= BufferSize then bytesToRead := Pred(BufferSize)
else bytesToRead := bytesRemaining;
BlockRead( F, pBuf^, bytesToRead, bytesToRead );
pEnd := @pBuf[ bytesToRead ];
pEnd^:= #0;
pScan := pBuf;
while pScan < pEnd do
begin
if not caseSensitive then AnsiUpper(pScan);
pPos := StrPos( pScan, SearchFor );