看来没有人回答,我自己写了个程序,如下:
procedure TForm1.SpeedButton4Click(Sender: TObject);
var
F1, F2, F3: TFileStream;
I, R, Buff_Count: Integer;
Buff1, Buff2, Buff3: array[0..1023] of char;
TMP_C1, TMP_C2 : char ;
begin
F1 := TFileStream.Create(Edit1.Text , fmOpenRead);
F2 := TFileStream.Create(Edit2.Text , fmOpenRead);
{if F1.Size <> F2.Size then
begin
Beep ;
exit ;
end;
}
try
F3 := TFileStream.Create('E:/My do
cuments/Delphi程序/二进制文件比较/T3.rar', fmCreate);
try
while F1.Position < F1.Size do
begin
R := F1.Read(Buff1, SizeOf(Buff1));
R := F2.Read(Buff2, SizeOf(Buff1));
if R > 0 then
begin
Buff_Count := R div SizeOf(Byte) - 1 ;
for I := 0 to Buff_Count do
begin
TMP_C1 := Buff1 ;
TMP_C2 := Buff2 ;
//if TMP_C1 = TMP_C2 then
Buff3 := Buff1 else
if TMP_C1 <> #0 then
Buff3 := Buff1 else
Buff3 := Buff2 ;
end;
F3.Write(Buff1, R);
end;
end;
finally
FreeAndNil(F3);
end;
finally
FreeAndNil(F1);
FreeAndNil(F2);
end;
end;
运行时,出现下列问题:
如果两个文件的差别如下:
52 61 72 21 1A 00
00 00 00 00 1A 07
程序可以找出数据,合成真正的
52 61 72 21 1A 07,文件正常,可是如果差别如下:
52 61 72 21 1A 00
00 01 02 00 1A 07
怎么读取都是61和1比较,而出现不了6和0比较,1和1比较,请赐教!