Delphi:在内存流中搜索字符串的最简单方法

时间:2013-04-11 13:54:52

标签: delphi delphi-xe2 pascal memorystream delphi-xe3

在内存流(和多个字符串)中搜索字符串并返回true或false的最简单方法是什么?

1 个答案:

答案 0 :(得分:2)

var ms:TMemoryStream;
    strS:TStringStream;
    aStr:string;
    aPos:integer;
    found:boolean;
begin
    ms:=TMemoryStream.Create;
    ms.LoadFromFile('c:\aFile.txt');
    strS:=TStringStream.Create;
    strS.LoadFromStream(ms);
    aPos:=pos(aStr,strS.dataString);
    found:=aPos>0;
end;

TStringStream是一个经常被遗忘但非常有用的工具 - 比弄乱pChars等更容易,更安全。

对于多次搜索,要么使用pos,substring等进行ackwardly循环,要么使用RegEx。

这段代码在Delphi XE中运行良好,虽然TStringStream很老 - 不确定它是否符合unicode。

(这个例子是漏洞的 - 为了简洁起见,我省略了终结代码)