掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
バイナリファイルで文字列を検索するには? (ID:8181)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
上のコードで FindPattern() で ms.Free を忘れてました。以下のように訂正 します。 function FindPattern(const Filename,str:string):integer; var ms:TMemoryStream; p:PByte; function ComparePattern(p1,p2:PByte;Count:integer):Boolean; var i:integer; begin result := false; for i := 1 to Count do begin if p1^ <> p2^ then exit; Inc(p1); Inc(p2); end; result := true; end; begin result := -1; ms := TMemoryStream.Create; ms.LoadFromFile(Filename); p := ms.Memory; while (integer(p)-integer(ms.Memory)) < (ms.Size-Length(str)+1) do begin if ComparePattern(p,PByte(str),Length(str)) then begin result := integer(p)-integer(ms.Memory); ms.Free; exit; end; Inc(p) end; ms.Free; end;
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.