C
cjsam
Unregistered / Unconfirmed
GUEST, unregistred user!
比如有2个变量:a,b:TMemoryStream;
a,b都有内容,我想比较a,b中有多少字节的相同内容,请问怎样比较?假如以64个字节为单位,都从a,b的头开始读,如果第一个64字节的内容一样,就把a,b的指针移动到第65个字节,再比较a,b的从65字节到128字节是否一样,如果一样,继续向后移动.
我写的部分代码.有问题.请大家帮我改改吧.,主要是怎的比较2个指针内的数据区:谢谢;
var
p1,p2ointer;
temps:Tmemorystream;
Equa :boolean=true;EquaLen:integer=64;
***********************
while Equa do
begin
a.seek(EquaLen-64,soFromBeginning);
b.seek(EquaLen-64,soFromBeginning);
temps.Clear;
temps.CopyFrom(a,EquaLen);
p1:=temps.Memory;
temps.Clear;
temps.CopyFrom(b,EquaLen);
p2:=tempS.Memory;
if (p1^=p2^)
begin
EquaLen:=EquaLen+64;
end
else
Equa:=false;
end;
a,b都有内容,我想比较a,b中有多少字节的相同内容,请问怎样比较?假如以64个字节为单位,都从a,b的头开始读,如果第一个64字节的内容一样,就把a,b的指针移动到第65个字节,再比较a,b的从65字节到128字节是否一样,如果一样,继续向后移动.
我写的部分代码.有问题.请大家帮我改改吧.,主要是怎的比较2个指针内的数据区:谢谢;
var
p1,p2ointer;
temps:Tmemorystream;
Equa :boolean=true;EquaLen:integer=64;
***********************
while Equa do
begin
a.seek(EquaLen-64,soFromBeginning);
b.seek(EquaLen-64,soFromBeginning);
temps.Clear;
temps.CopyFrom(a,EquaLen);
p1:=temps.Memory;
temps.Clear;
temps.CopyFrom(b,EquaLen);
p2:=tempS.Memory;
if (p1^=p2^)
begin
EquaLen:=EquaLen+64;
end
else
Equa:=false;
end;