3

TRectタイプの2つの変数を比較するにはどうすればよいですか?

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

上記で私は得ます:互換性のないタイプ。

ありがとう!

4

1 に答える 1

10

最新の Delphi を使用している場合、そのコードはコンパイルして機能します。最新のTRectDelphi バージョンでは、演算子のオーバーロードを利用して等値演算子をオーバーロードしています。Delphi レコードには組み込みの等値演算子がないため、Delphi 7 でその構文を機能させることはできません。

コンパイラの助けがなければ、ヘルパー関数が必要です。自分で書くことができます:

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;

ただし、@Sertac が指摘しているように、同じ名前の Windows API 関数をEqualRect使用できる場合は、独自に記述する必要はほとんどありません。

于 2012-08-03T13:51:03.803 に答える