3

如何比较两个 TRect 类型的变量?

var
  r1, r1: TRect;
begin
  if (r1 = r2) then
    ...
end; 

有了上面我得到:不兼容的类型。

谢谢!

4

1 回答 1

10

如果您有一个现代的 Delphi,那么该代码将编译并工作。现代TRectDelphi 版本利用运算符重载来重载相等运算符。您根本无法使该语法在 Delphi 7 中工作,因为 Delphi 记录没有内置的相等运算符。

如果没有编译器的帮助,您需要一个辅助函数。你可以自己写:

function EqualRect(const r1, r2: TRect): Boolean;
begin  
  Result := (r1.Left=r2.Left) and (r1.Right=r2.Right) and
            (r1.Top=r2.Top) and (r1.Bottom=r2.Bottom);
end;

EqualRect虽然,正如@Sertac 指出的那样,当您可以使用同名的 Windows API 函数时,几乎不需要自己编写。

于 2012-08-03T13:51:03.803 回答