delphi搜索字符串在流中的位置 function ScanStream(mStream: TStream; mStr: string): Integer; const cBufferSize = $8000; var S: string; T: string; I: Integer; L: Integer; begin Result := -1; if not Assigned(mStream) then Exit; if mStr = '' then Exit; L := Length(mStr); mStream.Position := 0; SetLength(S, cBufferSize); T := ''; for I := 1 to mStream.Size div cBufferSize do begin mStream.Read(S[1], cBufferSize); Result := Pos(mStr, T + S) - 1; //保留上次搜索的尾部字符~~ T := Copy(S, cBufferSize - L, MaxInt); if Result >= 0 then begin Result := Result + Pred(I) * cBufferSize - Length(T); Exit; end; end; I := mStream.Size mod cBufferSize; SetLength(S, I); if I > 0 then begin mStream.Read(S[1], I); Result := Pos(mStr, T + S) - 1; if Result >= 0 then begin Result := Result + mStream.Size - I - Length(T); Exit; end; end; end; { ScanStream } procedure TForm1.Button1Click(Sender: TObject); var vFileStream: TFileStream; begin vFileStream := TFileStream.Create('Data.sah', fmShareDenyNone); try Label1.Caption := IntToStr(ScanStream(vFileStream, Edit1.Text)); finally vFileStream.Free; end; end;
代码集中营
精选 转载
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
资源集中营
公众号定位说明
资源分享 公众号 -
JavaSE Question集中营
android培训、java培训、期待与您交流! (黑马程序员)未解问
职场 休闲 java类生命周期 主被动调用 -
javaSrcipt——练习正则表达式(初级练习集中营)
javaSrcipt——练习正则表达式(初级练习集中营)
正则表达式 javascript 开发语言 数据 快捷方式 -
国嵌视频学习mini2440问题集中营(不断更新)
mini2440 嵌入式
职场 嵌入式 休闲 mini2440