//通过比较内存实现
//CompareMem()procedure TForm1.Button1Click(Sender: TObject);
var
  A, B: TRect;
begin
  A := Rect(1, 2, 3, 4);
  B := Rect(1, 2, 3, 4);
  if CompareMem(@A, @B, SizeOf(TRect)) then
    ShowMessage('No.1 相等')
  else ShowMessage('No.1 不相等');  A := Rect(1, 2, 3, 4);
  B := Rect(1, 2, 3, 5);
  if CompareMem(@A, @B, SizeOf(TRect)) then
    ShowMessage('No.2 相等')
  else ShowMessage('No.2 不相等');
end;procedure TForm1.Button2Click(Sender: TObject);
type
  TMyRecord = record //记录类型大小必须固定
    a1: Integer;
    a2: ShortString; //不能用动态长度的类型//即:不能用string
  end;
var
  Rec1: TMyrecord;
  Rec2: TMyrecord;
begin
  Rec1.a1 := 1;
  Rec1.a2 := '1';  Rec2 := rec1;
  Rec1.a1 := 1;
  if CompareMem(@Rec1, @Rec2, SizeOf(TMyRecord)) then
    ShowMessage('No.3 相等')
  else ShowMessage('No.3 不相等');
end;

解决方案 »

  1.   

    //通过比较内存实现
    //CompareMem()procedure TForm1.Button1Click(Sender: TObject);
    var
      A, B: TRect;
    begin
      A := Rect(1, 2, 3, 4);
      B := Rect(1, 2, 3, 4);
      if CompareMem(@A, @B, SizeOf(TRect)) then
        ShowMessage('No.1 相等')
      else ShowMessage('No.1 不相等');  A := Rect(1, 2, 3, 4);
      B := Rect(1, 2, 3, 5);
      if CompareMem(@A, @B, SizeOf(TRect)) then
        ShowMessage('No.2 相等')
      else ShowMessage('No.2 不相等');
    end;procedure TForm1.Button2Click(Sender: TObject);
    type
      TMyRecord = record //记录类型大小必须固定
        a1: Integer;
        a2: ShortString; //不能用动态长度的类型//即:不能用string
      end;
    var
      Rec1: TMyrecord;
      Rec2: TMyrecord;
    begin
      Rec1.a1 := 1;
      Rec1.a2 := '1';  Rec2 := rec1;
      Rec1.a1 := 1;
      if CompareMem(@Rec1, @Rec2, SizeOf(TMyRecord)) then
        ShowMessage('No.3 相等')
      else ShowMessage('No.3 不相等');
    end;
      

  2.   

    用指针来判断
    function CompareMem(P1, P2: Pointer; Length: Integer): Boolean; assembler;
      

  3.   

    function  TForm1.CompareRec(a,b:Myrecord):boolean;
    begin
      Result := False;
      Result := (a.a1=b.a1) and (a.a2 = b.a2);
    end;procedure TForm1.Button1Click(Sender: TObject);
    begin
      rec1.a1:=1;
      rec1.a2:='1';  rec2:=rec1;
      //change rec1
      rec1.a1:=2;
      if CompareRec(rec1,rec2) then ShowMessage('=') else ShowMessage('<>');end;