1

メモリ ストリーム (および複数の文字列) 内の文字列を検索し、true または false を返す最も簡単な方法は何ですか?

4

1 に答える 1

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 に準拠しているかどうかは不明です。

(例は漏れやすいです - 簡潔にするためにファイナライズコードを省略しました)

于 2013-04-12T07:07:01.827 に答える