如何在在二进制文件中查找$6D6F7374这个子串并返回指针的位置
解决方案 »
- WinSocket API服务器如何检测客户端正常退出?
- 请教:SQL中ID自动编号问题
- 给分了!!!多线程问题.高手们进,谢谢.
- delphi 和DBASE的问题,急需高手回答!!!
- 一个小问题,大家都来看看,我只能出这么多钱了,希望帮帮忙!
- Can anybody help me to translate this paragraph?
- 有奖大放送喽!!!!!!
- 如何用子窗体控制mdi主窗体的属性?
- 安装第三方控件出错,大家看看是怎么回事
- string怎么转成stringlist类型呢?
- 为什么我设置全局快捷键 ,瑞星都是报病毒?
- 在treectl选中某一分点,一回车(Enter),如何用代码现实打开分支点
const
ConBytes=4;
ConFileN='d:\test\test.bin';
ConFindS=#$6D#$6F#$73#$74;
var
ff:TMemoryStream;
buffer:array[0..ConBytes-1] of byte;
buffer2:array[0..2*ConBytes-1] of byte;
i,size:int64;
j:byte;
begin
result:=-1; //表示未找到
ff:=TMemorystream.create;
ff.LoadFromFile(ConFileN);
size:=ff.size;
i:=0;
for j:=0 to ConBytes-1 do
buffer2[j]:=0;
while i <size do
begin
ff.read(buffer,ConBytes);
for j:=0 to ConBytes-1 do
buffer2[j+ConBytes]:=buffer[j];
j:=pos(ConFindS,pchar(@buffer2));
if j>0 then
begin
result:=i+j-ConBytes-1; //从0开始的相对于文件头的偏移量
break;
end;
for j:=0 to ConBytes-1 do
buffer2[j]:=buffer[j];
inc(i,ConBytes);
end;
ff.free;
end;