您的当前位置:我要购书网>在线阅读>Delphi/Perl

搜索字符串在流中的位置

来源:互联网  作者:我要购书网信息中心  发布:我要购物网收集整理  发布时间:2006-8-31 人气:135

(*//标题:搜索字符串在流中的位置说明:适用于文件搜索等设计:Zswang支持:wjhu111@21cn.com日期:2004-03-21//*)(*//============================================================================设计思路:从流中将数据取到缓冲中再逐一对缓冲进行搜索============================================================================//*)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 }//Exampleprocedure TForm1.Button1Click(Sender: TObject);var vFileStream: TFileStream;begin vFileStream := TFileStream.Create('C:\temp\temp.exe', fmShareDenyNone); try Label1.Caption := IntToStr(ScanStream(vFileStream, Edit1.Text)); finally vFileStream.Free; end;end;
相关文章
· 搜索引擎google的小秘密
· 搜索字符串在流中的位置
· 搜索引擎:平移算法简介
· 搜索引擎:数字信息搜索,理论著作
热点文章
%>
· creating user controls
· 提高fastreplace速度 (fstrrep.pas)
· asc ii 完整码表及简介
· 自动生成拼音(汉字反查到拼音)
· sql2000无法安装的解决办法
· 浏览器集成教学 自定义浏览器
· vc++技术内幕(第四版)笔记(第7章)
· mysql5.0中文乱码解决方案
· sql server日期计算
· vc下利用ado连接access数据库
 淘宝旺旺:我要购书网上书店『图书目录
本购书中心地址: 杭州市延安路111号清波商厦南楼D座(总部) 上海市闸北区老沪太路网上购书中心(沪部),  邮编:310002
电子邮件:books@51goushu.com  经营许可证编号:沪ICP备06038574号
版权所有 2003-2008 © All Rights Reserved .购书网