Delphi_按字节比较两个文件

Posted CodeSkill

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Delphi_按字节比较两个文件相关的知识,希望对你有一定的参考价值。

1、界面

 

2、代码

procedure TForm1.btnSelectFile01Click(Sender: TObject);
begin
  if OpenDialog1.Execute then
  begin
    edtSelectFile01.Text := OpenDialog1.FileName;
  end;
end;

procedure TForm1.btnSelectFile02Click(Sender: TObject);
begin
  if OpenDialog1.Execute then
  begin
    edtSelectFile02.Text := OpenDialog1.FileName;
  end;
end;

procedure TForm1.btnCompareFileClick(Sender: TObject);
var ms1,ms2 :TMemoryStream;
    i :Integer;
    byte1, byte2 :Byte;
    iLenMin :Integer;
begin
  ms1 := TMemoryStream.Create;
  ms2 := TMemoryStream.Create;
  try
    ms1.LoadFromFile(Trim(edtSelectFile01.Text));
    ms2.LoadFromFile(Trim(edtSelectFile02.Text));

    if (ms1.Size <> ms2.Size) then
    begin
      Memo1.Lines.Add(\'ms1.Size <> ms2.Size : \'+inttostr(ms1.Size)+\' , \'+inttostr(ms2.Size));
      Memo1.Lines.Add(\'\');
//      Exit;
    end;

    iLenMin := ms1.Size;
    if (iLenMin > ms2.Size) then // 取小值
      iLenMin := ms2.Size;
    Memo1.Lines.Add(\'iLenMin : \'+inttostr(iLenMin));
    Memo1.Lines.Add(\'\');

    ms1.Position := 0;
    ms2.Position := 0;
    for i:=0 to iLenMin-1 do
    begin
      byte1 := 0;
      byte2 := 0;
      ms1.Read(byte1, 1);
      ms2.Read(byte2, 1);
      if byte1<>byte2 then
      begin
        Memo1.Lines.Add(\'!= --> Idx : (\'+inttostr(i)+\') --> \'+inttostr(byte1)+\' , \'+inttostr(byte2));
      end;
    end;
  finally
    ms1.Free;
    ms2.Free;
  end;
end;

 

3、

4、

5、

 

以上是关于Delphi_按字节比较两个文件的主要内容,如果未能解决你的问题,请参考以下文章

delphi文件操作(比较全)

比较两个字节数组的最快方法是啥?

DELPHI如何读取一个图片,保存到字节数组中

按字节方式和字符方式读取文件_加载配置文件

将 16 字节字符串与 SSE 进行比较

delphi 如何获取文件的大小和类型