tseug兄的办法可以解决问题,但是效率很低,上面那段代码可以这样改一下:
Stream := TFileStream.Create('C:/COMMAND.COM', fmOpenRead);
try
with Stream do
begin
while Position < Size do
begin
Seek(Offset, soFromBeginning);
ReadBuffer(Buffer, 100)
//这里作改动,使每次取的字符个数为100,或更大
if pos(#$fe#$de#$4d,buffer)>0 then //这里没作测试,差不多是可以的.
begin
ShowMessage('找到了');
Break;
end;
Offset=Offset+97;//加97的原因是在取BUFFER时,可能将这三个连续的字符分开
end;
end;
finally
Stream.Free;
end;